SAML と OIDC の違いは何ですか?
この記事では、SAML と OIDC プロトコルの概要と、それらの一般的な認証フローを提供します。各プロトコルの明確な違い、利点と欠点を比較します。さらに、潜在的なユーザーシナリオに基づいて、これら二つのプロトコルの選択に関するガイダンスを提供します。
この記事では、SAML と OIDC プロトコルの概要と、それらの一般的な認証フローを提供します。各プロトコルの明確な違い、利点と欠点を比較します。さらに、潜在的なユーザーシナリオに基づいて、これら二つのプロトコルの選択に関するガイダンスを提供します。
OpenID Connect (OIDC) と Security Assertion Markup Language (SAML) は、アイデンティティプロバイダ (IdP) がユーザー認証とアクセス制御を実装できるようにする認証プロトコルです。各プロトコルは、認証されたユーザーのアイデンティティを維持するための独自のメカニズムを定義しており、それが保護されたアプリケーションへのアクセスを許可または拒否するために使用されます。
IdP はユーザーのアイデンティティ情報のデータベースを維持します。サービスプロバイダ (SP) は、ユーザーを認証するためにこの情報を利用し、場合によっては複数のアプリケーションをまたいで認証を使用できるようにします(シングルサインオン)。OIDC と SAML は、このユーザーのアイデンティティに関連する情報がこれら二者間でどのように流れるかを定義する基準です。最終的な目標は同じですが、それを達成するための基本的なアプローチは異なっています。
SAML 2.0 は、2005 年からの現在のバージョンです。アイデンティティ情報、要求、応答の書式設定には XML を使用します。XML は、人間とコンピュータの両方が理解できる方法でドキュメントをフォーマットするための成熟した標準です。XML エンコードされた情報の送受信のために、基本的な SOAP または HTTP 要求を使用します。SAML プロトコルで定義された、アイデンティティ情報を要求するサービスはサービルプロバイダ (SP) です。
標準的な SAML 認証プロセスを紹介する前に、SAML 認証が依存する要素を理解する必要があります。IdP と SP が互いに認識し、認証プロセスを完了する前に、必要な情報を「交換」する必要があります。通常これは XML でフォーマットされたメタデータを介して行われます。交換される情報には以下が含まれます:
IdP と SP が上記の情報を把握したら、次のような承認プロセス(典型的な SP 起動の認証フロー)を進めることができます:
OIDC は OAuth 2.0 フレームワークを拡張する現代的なプロトコルです。データペイロードの構築には JSON ベースの Web トークン (JWT) を使用します。JWT は、エンティティ間のクレームの安全な交換と表現のためのガイドラインを設定している業界標準です。これらのクレームは、基本的に暗号化されたユーザーデータであり、アイデンティティの検証と管理において重要です。OIDC は主に広く普及している HTTPS をデータ送信に使用します。
周知のように、OIDC プロトコルは、認可コードフロー、インプリシットフロー、ハイブリッドフローを含むさまざまなフローをサポートしています。以下の例では、それらの中で最も安全で典型的なフローである認可コードフローを見ていきます。これは、Logto でも利用されるフローです。
OIDC と SAML の両方は強力な認証システムであり、それぞれが独自の強みを持っています。選択は、組織の具体的な要件に依存します。
開発者の間で人気のあるアイデンティティソリューションである Logto は、最近、Enterprise SSO 機能を導入しました。これにより、SAML および OIDC プロトコルのサポートが提供され、Google Workspace や Microsoft Entra ID(旧 Azure AD)などの主流 IdP との即時統合が可能です。Logto を使用することで、SSO の実装に伴う複雑さを回避できます。いくつかの簡単な設定ステップで、アイデンティティシステムで SSO サポートを有効にし、ビジネスニーズに合った適切なプロトコルを選択できます。