SAML と OIDC: 2 つの主要な ID プロトコルを 1 つの記事で理解する

Security Assertion Markup Language (SAML) と OpenID Connect (OIDC) は、比較的一般的な 2 つの認証プロトコルおよび ID 標準であり、それぞれに長所、短所、相違点があります。この記事では、SAML と OIDC という 2 つのプロトコルを比較し、それぞれのエンタープライズ ユース ケースと、それぞれが ID およびアクセス管理 (IAM) にどのように寄与するかを調査します。どちらのプロトコルもシングル サインオン (SSO) をサポートしていますが、導入前に 2 つのプロトコルの技術的および概念的な違いを明確にする必要があります。SAML はクロスドメイン Web サイトへのアクセスを安全に許可することに重点を置いているのに対し、OIDC は追加のコンテキストを提供します。

1. SAML と OIDC の違い

SAML 2.0 プロトコルと OIDC プロトコルを比較する前に、まず SAML プロトコルと OAuth プロトコルを比較する必要があります。OAuth は OIDC の基礎であり、OIDC はこれを ID 層を通じて拡張し、分散型 ID 検証サービスを実現します。OpenID オープン ソース コミュニティは、2005 年に OpenID 開発プロジェクトを開始しました。同財団によると、現在、5万以上のWebサイトの10億以上のユーザーアカウントがOpenIDで有効化されており、OIDC認証、OIDCコミュニティ、コンプライアンス運用をサポートするインフラストラクチャを管理しているという。  

対照的に、SAML 2.0 は、2003 年以来商用および民間のアイデンティティ プロバイダー (IdP) およびサービス プロバイダー (SP) に認証および認可機能を提供してきたオープン スタンダードです。SAML は当初、拡張マークアップ言語 (XML) ベースのフレームワークを使用してシングル サインオンを実装し、IdP と SP を相互に独立させ、一元的なユーザー管理を可能にしました。次のセクションでは、プロトコル内の各コンポーネントを調べながら、SAML がどのように機能するかを説明します。

2. SAMLの実装原理

前述したように、SAML は、ID フェデレーションを通じて Web アプリケーションへのシングル サインオン アクセスを提供する認証および認可のオープン スタンダードです。SAML は、アクセスと SP を認証するために IdP からユーザー資格情報を中継します。サービス プロバイダー (SP) は、ユーザーにアクセスを許可する前に認証する必要があります。各ユーザーまたはグループには、プロファイル情報を要約し、特定のアクセス権を宣言する独自の属性があります。

SAML は、XML メタデータ ドキュメント、つまり SAML トークンを使用して、アサーションを作成し、ユーザー ID とアクセス権を認証します。

SAML プラグインは通常、セキュリティ要件への準拠を確保するためにシングル サインオンを実装するためにアプリケーションまたはリソースで使用され、プロトコル内の資格情報とアサーションによってアクセス アクセスの ID が明確になります。さらに、SAML を使用して、アプリケーション内の ID のアクセスを制御できます。SAML のコア コンポーネントには、IdP、SP、クライアント、属性が含まれており、ユーザー情報を交換してアドミッションを制御できます。

1) アイデンティティプロバイダー (IdP)

IdP は、デジタル ID を維持および管理するサービスです。アプリケーション、ネットワーク、および Web サービス全体でユーザーの資格情報を検証します。その主な役割は、ユーザーの資格情報の整合性を保護し、シングル サインオンが必要な場合にユーザー ID フェデレーションを提供することです。

2) クライアント

クライアントは、IdP によって管理される資格情報を使用してサービスに対して認証を行うユーザーです。たとえば、企業は従業員に、会社の電子メール アドレスとパスワードを使用してシングル サインオンを完了し、SAML プロトコルを通じて必要なサービスにアクセスすることを許可できます。

3) 属性

SAML は、アサーションと呼ばれるメッセージを IdP から SP に転送する役割も果たします。これらのアサーションは、クライアントの特権レベルを認証、認可、決定することによって、イベントにアクセスするためのすべての関連セキュリティ要件を設定します。このプロセスでは、「部門」、「メール」、「役割」などの属性を使用して、アクセス管理とアドミッション コントロールを実装します。カスタム ソフトウェアをサポートするために、SAML プロトコルがカスタム属性で拡張される場合があります。 

4) サービスプロバイダー (SP)

SP は、シングル サインオンに SAML を使用してユーザーが認証されるリソースであり、通常はプライベート Web サイトまたはアプリケーションです。SP は、ユーザーにアクセスを許可する前に、クライアント プロファイルに対して IdP によって送信されたアサーションを受け入れるか拒否します。SP は認証リクエストを IdP に送信し、クライアントはそれに応じてアサーションを IdP に送信します。このプロセスは逆になる場合があり、IdP はどちらの順序でもログイン プロセスを開始できます。 

3. OIDCの実現原理

OIDC は OAuth プロトコルで拡張されており、その主なコンポーネントには OAuth プロトコルの基本フレームワークに加えて、独自のユーザー ワークフローが含まれています。OIDC を使用すると、クライアント サービス、つまりアプリケーションが OpenID 認証サーバーでユーザーを認証し、認証プロセス中に情報共有のために JSON Web トークン (JWT) をディスパッチする RESTful API を介してプロファイル情報を交換できるようになります。このアプローチは拡張性が高く、クロスプラットフォームに柔軟で、実装が比較的簡単であるため、多くの開発者を魅了しています。

4. ユーザー認証

用户是资源所有者,通过授权服务器的身份验证后获取客户端应用的访问权限,授权服务器会授予用户访问令牌,允许应用从用户信息(UserInfo)端点接收同意信息,用户信息端点受到 OpenID 服务器的保护,服务器中的 JSON 对象包含了有关每个用户的断言。随后服务器将身份验证信息编码在应用接收的 ID 令牌中,信息缓存后就能实现可扩展性以及个性化的终端用户体验。

5. 基于 OAuth 2.0 协议

OIDC 建立在 OAuth 2.0 框架的基础上,OAuth 2.0 标准可授予第三方应用和服务访问用户 ID 资源的权限。用户凭证并不是通过网络发送,也不会存储在第三方服务器上,因此提高了资源安全性,也方便了管理员操作。 

6. SAML 和 OIDC 的相似性与差异性

相似性

  • SAML 和 OIDC 都是实现单点登录的身份协议。

  • SAML 和 OIDC 都是安全成熟、有据可查的技术。

  • 用户都通过 IdP 进行一次身份验证后就可以访问“信任”IdP 的其他应用。部分零信任服务都会在信任链的每个节点进行身份验证,并使用另一种验证方法定期验证访问。

  • 登录工作流对于终端用户似乎都一样,但后台的技术实现却有着千差万别。

差异性

  • 很多开发人员认为 OIDC 的实现更简单,不需要 XML 处理。

  • OIDC 缺乏权限等用户授权数据,重点关注身份断言。SAML 是身份数据的交换,功能更加丰富

  • OIDC 支持去中心化的身份验证。

  • SAML 使用断言,OIDC 和 OAuth 使用 ID 令牌。

  • OIDC 专为 API 工作负载而设计,可用于保护 API。

7. 用例

开发人员和企业应选择最适合自身特定用例的解决方案,部分情况也可以采用组合方案。OIDC要用于需要请求访问令牌的反向通道网站和移动应用。

SAML 几乎都用于前向通道网站访问,这类访问中用户会触发应用的身份验证,并且假定客户端应用(Web 服务)在与用户设备以外的其他设备上运行。以下是针对两种协议用例的一些通用提示:

  • 移动应用通常使用 OIDC 类型的轻量化服务,开发人员使用的工具很大一部分都是预构建工具,也可以从插件库中获得。

  • 内置 SAML 的应用使用很简单,只涉及 SAML。

  • 使用 SAML 从门户访问企业应用。

  • 使用 OAuth 2.0 或 OIDC 服务保护 API 或公开 API。

  • 企业有时更喜欢用 SAML,因为可以自定义,而且优先交换安全数据。有监管要求的行业几乎都会用 SAML 保护用户敏感信息。

OIDC 和 SAML 协议之间不会相互排斥,企业可以考虑将 SAML 用于单点登录,保护资源访问,对于具有高可扩展性要求的移动化用例则可以使用 OIDC。总的来说,两者各有其优点,都支持单点登录服务。

おすすめ

転載: blog.csdn.net/lyshark_lyshark/article/details/126798202