日本語
  • OIDC
  • SAML
  • SSO
  • authentication
  • authorization

SAML と OIDC

SAML と OIDC は、SSO 業界で最も人気のある認証プロトコルの 2 つです。この記事では、SAML と OIDC のアーキテクチャとユースケースに関して比較します。

Simeng
Simeng
Developer

SAML とは?

SAML(Security Assertion Markup Language)は、異なる関係者間、特にアイデンティティプロバイダー(IdP)とサービスプロバイダー(SP)間で認証および認可データを交換するための、XML ベースのオープン標準です。 ウェブベースの SSO(シングルサインオン)を可能にし、一度の認証で複数のアプリケーションにアクセスできるようにします。SAML は長年にわたり存在している成熟したプロトコルで、企業によって広く採用されています。Salesforce、Workday、Microsoft Azure AD などの最も人気のある SaaS プラットフォームは、すべて SAML SSO をサポートしています。

SAML のコンポーネント

  1. アイデンティティプロバイダー (IdP): ユーザーを認証し、サービスプロバイダーにアイデンティティ情報を提供するエンティティ。
  2. サービスプロバイダー (SP): ユーザーにサービスを提供し、アイデンティティプロバイダーにユーザーを認証してもらうエンティティ。
  3. SAML アサーション: ユーザーの認証および認可の詳細を運ぶ XML ベースのドキュメント。認証ステートメント、属性ステートメント、および認可決定ステートメントを含む。
  4. SAML プロトコル: IdP と SP 間で SAML アサーションを交換するためのメッセージ形式とルールを定義。
  5. SAML バインディング: HTTP POST、HTTP リダイレクトなど、異なる通信プロトコルを介して SAML メッセージをどのように転送するかを定義。
  6. SAML メタデータ: IdP と SP の設定情報を含む XML ベースのドキュメント。公開鍵、エンドポイント、および IdP と SP 間の信頼を確立するために使用されるサポートされるバインディングを含む。
  7. シグナル・サインオン・エンドポイント: SP がユーザーを IdP で認証するためにリダイレクトするエンドポイント。
  8. アサーションコンシューマーサービス (ACS) URL: 成功した認証後に IdP が SAML アサーションを送信するエンドポイント。

SAML の仕組み

  1. SP が開始する SSO フロー:
  1. IdP が開始する SSO フロー:

SAML の利点

  • 成熟しており広く受け入れられている: SAML は長年にわたって存在する成熟したプロトコルで、企業によって広く採用されています。
  • 標準化: SAML は OASIS によって維持されるオープン標準であり、異なるベンダー間の相互運用性を確保します。
  • SSO: SAML はウェブベースの SSO を可能にし、一度の認証で複数のアプリケーションにアクセスできるようにします。
  • 中央集権化されたユーザー管理: SAML は組織が一元的にユーザーアイデンティティを管理し、一貫したセキュリティポリシーを強制することを可能にします。

SAML の課題

  • 複雑さ: SAML は XML とセキュリティの概念についての深い理解を必要とする複雑なプロトコルです。
  • パフォーマンス: SAML メッセージは XML ベースで大きくなることがあり、XML の配送および解析は JSON Web Token (JWT) のようなトークン形式と比べて遅くなることがあります。
  • 古い標準: SAML は OIDC に比べて古い標準であり、あまり安全性が高いと考えられていません。
  • ベンダー依存: SAML はベンダー固有のプロトコルであり、ベンダー間の切り替えが難しくなることがあります。

OIDC とは?

OIDC(OpenID Connect)は、OAuth 2.0 プロトコルに基づくアイデンティティレイヤーです。SAML と同様に、OIDC も IdP と SP 間で認証および認可データの交換に使用されます。

SAML と比較して、OIDC はよりモダンで軽量なプロトコルで、モダンなウェブおよびモバイルアプリケーション向けに人気を集めています。OIDC は JWT を使用してアイデンティティ情報を伝達し、XML ベースの SAML アサーションと比べてよりコンパクトで扱いやすくなっています。特に消費者向けのアプリケーションや API セキュリティで人気です。

OIDC のコンポーネント

  1. アイデンティティプロバイダー (IdP): ユーザーを認証し、サービスプロバイダーにアイデンティティ情報を提供するエンティティ。
  2. リライングパーティ (RP): ユーザーにサービスを提供し、アイデンティティプロバイダーにユーザーを認証してもらうエンティティ。例: ウェブアプリケーション、モバイルアプリ、API。
  3. OIDC トークン: ユーザーのアイデンティティ情報を運ぶトークン。
    • ID トークン: ユーザーのアイデンティティ情報を含む JWT 形式のトークン。
    • アクセス トークン: 保護されたリソースにアクセスする権限を与える JWT または不透明な形式のトークン。
    • リフレッシュ トークン: ユーザー再認証なしで新しいアクセス トークンを取得するためのトークン。RP にオフラインの長期間使用可能な認可を与えます。
  4. OIDC エンドポイント: 認証およびトークン交換のために使用されるエンドポイント。最も重要なエンドポイントは以下の通りです:
    • ディスカバリーエンドポイント: RP が IdP から公開 OIDC 構成情報を取得できるエンドポイント。
    • 認可エンドポイント: RP が認証リクエストを送信する場所。
    • トークンエンドポイント: RP が認可サーバにトークンをリクエストする場所。
    • ユーザー情報エンドポイント: RP がユーザーのプロファイル情報を取得できる場所。
  5. スコープ: OIDC は、RP に付与されるアクセス権を定義する一連の標準スコープを定義しています。例えば openidprofileemailaddress など。

OIDC の仕組み

OIDC は、さまざまなユースケースに対応するための複数のフローを提供しています。以下の 2 つが最も一般的な OIDC フローです:

  1. 認可コードフロー:

認可コードフローは、消費者向けアプリケーションで OIDC に最もよく使用されるフローです。

  1. クライアントクレデンシャルフロー:

クライアントクレデンシャルフローは、ユーザーベースでない(機械間)認証に使用できます。

OIDC の利点

  • モダンで軽量: OIDC は JSON ベースの JWT トークンを使用する現代的なプロトコルで、XML ベースの SAML アサーションと比べてよりコンパクトで処理しやすいです。
  • 消費者向けアプリケーション: OIDC は特に消費者向けアプリケーションや API セキュリティで人気です。
  • 相互運用性: OAuth 2.0 に基づいて構築されており、多様なプラットフォーム、デバイス、プラットフォームと互換性があります。
  • セキュリティ: OIDC はユーザー認証および API 保護においてより安全な方法を提供しています。トークンイントロスペクション、トークンの取り消し、Proof Key for Code Exchange (PKCE) などのさまざまな現代的なセキュリティ機能を組み込んでおり、さまざまなセキュリティニーズに適した異なる認証フローをサポートしています。
  • 使いやすさ: OIDC は SAML と比べて実装が容易で扱いやすく、開発者に優れており、複数のプログラミング言語およびプラットフォームの包括的なライブラリと SDK を持っています。

OIDC の課題

  • トークン管理: OIDC は認証および認可にトークンに依存しています。安全性を確保するためには適切なトークン管理の実践が求められます。
  • 複雑さ: OIDC は基本的な設定では単純ですが、その柔軟性から、カスタムクレームや役割ベースのアクセス制御 (RBAC) などを実装する際には複雑さが増す可能性があります。
  • 採用: OIDC は SAML と比べて比較的新しいものであり、特に企業分野ではまだ導入が進んでいないところもあります。一部のレガシーシステムでは SAML に依存して SSO を実現しているかもしれません。

SAML と OIDC の比較

SAMLOIDC
トークン形式XML ベースの SAML アサーションJSON ベースの JWT トークン
主なユースケースエンタープライズ SSO、B2B 統合消費者向けアプリ、API セキュリティ
使いやすさ複雑で、XML の深い理解が必要単純で、JSON ベース、実装が容易
採用企業によって広く採用モダンなアプリ向けに人気の上昇中
セキュリティ成熟しているが、あまり安全性が高いとは見なされていないモダンで、より安全
柔軟性限られており、SSO ユースケースのために設計された柔軟で、さまざまなユースケースをサポート

SAML と OIDC の未来

SAML と OIDC の両方が、認証および認可の目的で広く使用されています。

SAML は企業の SSO および B2B 統合にとっての基盤として位置付けられています。連合アイデンティティ管理に対するその強力なサポートと実績により、特にレガシーシステムや大規模な組織において、その関連性が保証されています。

一方で OIDC は、モダンなアプリケーションにおける安全でスケーラブルな認証の需要によって進化を続けています。その軽量な性質と API およびマイクロサービスとの整合性により、クラウドネイティブおよび分散アーキテクチャの基盤となっています。パスワードレス 認証、バイオメトリクス、および多要素認証 (MFA) の台頭に伴い、OIDC は新しい技術とのシームレスな統合を期待され、今後もその関連性が保証されるでしょう。