1. ホーム
  2. openid

[解決済み] OpenIDとSAMLの違いは何ですか?

2022-04-24 16:01:24

質問

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

どのように解決するのですか?

オリジナルOpenID 2.0とSAMLの比較

この2つは、認証のための2つの異なるプロトコルで、技術的なレベルでも異なっています。

遠目には、ユーザーが認証を開始する時点から違いがあります。OpenIDの場合、ユーザーのログインは通常、認証を担当するリソースのHTTPアドレスになります。一方、SAML はあなたのサイトと ID プロバイダとの間の明確な信頼関係に基づいているので、知らないサイトからの認証情報を受け入れることはむしろ珍しいことです。

OpenIDのIDはネット上で簡単に取得できる。開発者としては、まったく異なるOpenIDプロバイダから来るユーザーを受け入れるだけでいいのです。一方、SAMLプロバイダは通常、事前にコード化する必要があり、選択したIDプロバイダのみとアプリケーションを連携させることになる。受け入れ可能なOpenID IDプロバイダを絞り込むことは可能ですが、これは一般的なOpenIDの概念に反していると思います。

OpenIDでは、任意のサーバから送られてくるIDを受け入れることができます。誰かが http://someopenid.provider.com/john.smith . データベースの中のユーザーとどのように照合するのでしょうか?例えば、この情報を新しいアカウントで保存し、ユーザーが再びサイトを訪れたときにこの情報を認識させるなど、何らかの方法で照合します。ユーザーに関する他の情報(名前や電子メールを含む)は信用できないことに注意してください!

一方、アプリケーションとSAML Idプロバイダーの間に明示的な信頼関係があれば、名前と電子メールを含むユーザーに関する完全な情報を取得でき、この情報は信頼関係によって信頼できるようになります。つまり、Idプロバイダが何らかの方法ですべての情報を検証したと信じる傾向があり、アプリケーション・レベルでそれを信頼することができるのです。もしユーザーが未知のプロバイダから発行されたSAMLトークンを持ってきた場合、アプリケーションは認証を拒否するだけです。

OpenID Connect と SAML の比較

(セクション追加 07-2017、拡張 08-2018)

この回答は2011年のもので、当時はOpenIDは以下の略称でした。 OpenID 2.0 . その後、2012年のどこかで OAuth2.0 が発表され、2014年には OpenIDコネクト (さらに詳しい年表 こちら ).

今、これを読んでいる人へ-。 OpenID Connectは、元の回答で言及されているOpenIDとは異なります。 OAuth2.0を拡張したものです。

一方 この回答 は、概念的な観点から光を当てることができますが、OAuth2.0のバックグラウンドを持っている人にとって非常に簡潔なバージョンは、OpenID Connectの はOAuth2.0であるが、その標準的な方法として ユーザー情報を問い合わせる アクセストークンが利用可能になった後

最初の質問に戻りますが、OpenID Connect (OAuth2.0) と SAML の主な違いは、アプリケーションと ID プロバイダの間にどのように信頼関係が構築されるかということです。

  • SAMLはデジタル署名で信頼関係を構築する。IDプロバイダが発行するSAMLトークンは署名付きXMLで、アプリケーションは署名そのものと提示する証明書を検証する。ユーザー情報は、他の情報とともにSAMLトークンに含まれる。

  • OAuth2 は、アプリケーションから ID への直接 HTTPs 呼び出しで信頼関係を構築します。リクエストにはアクセストークン(プロトコルフロー中にアプリケーションが取得)が含まれ、レスポンスにはユーザーに関する情報が含まれます。

  • OpenID Connectはこれをさらに発展させ、IDの取得を可能にしました。 を使用せずに アプリケーションからIDプロバイダへの呼び出しを含む、この余分なステップ。このアイデアは、OpenID Connectプロバイダが実際に発行している 2 トークンである access_token は、OAuth2.0 が発行するものとまったく同じもので、新しいものである id_token というもので、これは JWT トークンを使用します。 サイン入り IDプロバイダによって アプリケーションは id_token を使用して、JWT トークンに含まれるクレームに基づいてローカルセッションを確立することができます。 id_token 使用できない を使用して他のサービスに問い合わせることもできますが、 そのようなサードパーティーのサービスの呼び出しには access_token . つまり、OpenID Connectは、SAML2(署名付きトークン)とOAuth2(アクセストークン)のハイブリッドと考えることができるのです。