日本語
  • sso
  • saml
  • oidc

SAML と OIDC の違いは何ですか?

この記事では、SAML と OIDC プロトコルの概要と、それらの一般的な認証フローを提供します。各プロトコルの明確な違い、利点と欠点を比較します。さらに、潜在的なユーザーシナリオに基づいて、これら二つのプロトコルの選択に関するガイダンスを提供します。

Darcy Ye
Darcy Ye
Developer

OpenID Connect (OIDC) と Security Assertion Markup Language (SAML) は、アイデンティティプロバイダ (IdP) がユーザー認証とアクセス制御を実装できるようにする認証プロトコルです。各プロトコルは、認証されたユーザーのアイデンティティを維持するための独自のメカニズムを定義しており、それが保護されたアプリケーションへのアクセスを許可または拒否するために使用されます。

SAML と OIDC とは?

IdP はユーザーのアイデンティティ情報のデータベースを維持します。サービスプロバイダ (SP) は、ユーザーを認証するためにこの情報を利用し、場合によっては複数のアプリケーションをまたいで認証を使用できるようにします(シングルサインオン)。OIDC と SAML は、このユーザーのアイデンティティに関連する情報がこれら二者間でどのように流れるかを定義する基準です。最終的な目標は同じですが、それを達成するための基本的なアプローチは異なっています。

SAML

SAML 2.0 は、2005 年からの現在のバージョンです。アイデンティティ情報、要求、応答の書式設定には XML を使用します。XML は、人間とコンピュータの両方が理解できる方法でドキュメントをフォーマットするための成熟した標準です。XML エンコードされた情報の送受信のために、基本的な SOAP または HTTP 要求を使用します。SAML プロトコルで定義された、アイデンティティ情報を要求するサービスはサービルプロバイダ (SP) です。

標準的な SAML 認証プロセスを紹介する前に、SAML 認証が依存する要素を理解する必要があります。IdP と SP が互いに認識し、認証プロセスを完了する前に、必要な情報を「交換」する必要があります。通常これは XML でフォーマットされたメタデータを介して行われます。交換される情報には以下が含まれます:

  • 公開鍵、IdP と SP はそれぞれの秘密鍵と公開鍵ペアを生成し、通信を署名または暗号化するために交換します。ネットワーク通信のセキュリティが向上したことで、ほとんどのシナリオでは現在、要求の署名のみが必要となり、暗号化ステップは省略されています。
  • エンドポイント、SP が IdP に SAML 認証要求を送信し、IdP による認証要求に応じて SAML アサーションを受け取るために使用されます。
  • サポートされている XML 属性フォーマット、IdP が認証を完了した後に必要なユーザー情報を SP に送信するために使用されます。

IdP と SP が上記の情報を把握したら、次のような承認プロセス(典型的な SP 起動の認証フロー)を進めることができます:

OIDC

OIDC は OAuth 2.0 フレームワークを拡張する現代的なプロトコルです。データペイロードの構築には JSON ベースの Web トークン (JWT) を使用します。JWT は、エンティティ間のクレームの安全な交換と表現のためのガイドラインを設定している業界標準です。これらのクレームは、基本的に暗号化されたユーザーデータであり、アイデンティティの検証と管理において重要です。OIDC は主に広く普及している HTTPS をデータ送信に使用します。

周知のように、OIDC プロトコルは、認可コードフロー、インプリシットフロー、ハイブリッドフローを含むさまざまなフローをサポートしています。以下の例では、それらの中で最も安全で典型的なフローである認可コードフローを見ていきます。これは、Logto でも利用されるフローです。

OIDC と SAML の特徴的な側面

  • より最近開発されたことから、OIDC は現代のアプリケーション認証により適しています。
  • 歴史的に言えば、SAML は OIDC よりも早期に現れ、多くの確立された企業システムに統合されています。
  • SAML の重い XML ドキュメントとは対照的に、OIDC の JWT はコンパクトで処理しやすいです。
  • OIDC の設定は一般的に SAML よりも単純です。
  • OIDC の重要な機能は「スコープ」の定義であり、IdP がさまざまな権限を管理できるようにします。アプリケーションは IdP から特定の権限を要求し、それはユーザーの承認時に付与されます。この OIDC の属性は、IdP に対して細かい権限の制御を提供します。

OIDC と SAML のどちらを選ぶべきですか?

OIDC と SAML の両方は強力な認証システムであり、それぞれが独自の強みを持っています。選択は、組織の具体的な要件に依存します。

  • アイデンティティプラットフォームを迅速かつ効率的に展開するためには、OIDC が SAML よりも優れています。OIDC の実装はよりシンプルで、SAML に必要なメタデータ解析、認証要求処理、SAML アサーション分析に伴う複雑な XML 処理を避けることができます。
  • OIDC は、広範な API 相互作用や洗練された権限メカニズムを持つ環境に最適であり、権限に対するより柔軟で効率的な制御と優れた開発者体験を提供します。
  • SAML ベースの既存システムとの統合時に SAML を選択すると、システムの相互運用がスムーズになり、異なるプロトコルを橋渡しする労力が削減されます。

市場には良いソリューションがありますか?

開発者の間で人気のあるアイデンティティソリューションである Logto は、最近、Enterprise SSO 機能を導入しました。これにより、SAML および OIDC プロトコルのサポートが提供され、Google Workspace や Microsoft Entra ID(旧 Azure AD)などの主流 IdP との即時統合が可能です。Logto を使用することで、SSO の実装に伴う複雑さを回避できます。いくつかの簡単な設定ステップで、アイデンティティシステムで SSO サポートを有効にし、ビジネスニーズに合った適切なプロトコルを選択できます。