web-dev-qa-db-ja.com

JWTとSAMLの違いは?

JWT(Json Web Token)とSAMLの主な違いは何ですか?これらの例と春のセキュリティを提案してください。前もって感謝します。

37
Jamsheer

[〜#〜] saml [〜#〜][〜#〜] jwt [〜#〜] は、プログラミング言語に依存しないセキュリティトークン形式です。 。 SAMLは古い形式であり、XMLに基づいています。 SAML-P、WS-Trust、WS-Federationなどのプロトコルで一般的に使用されています(厳密には必須ではありません)。

JWT(JSON Web Token)トークンはJSONに基づいており、OpenID ConnectやOAuth 2.0などの新しい認証および承認プロトコルで使用されます。

52
MvdD

追加情報として、SAMLはプロトコルおよびトークン形式ですが、JWTは唯一のトークン形式です。

7
Jamsheer

どちらも、当事者間で認証および許可データを交換するために使用されますが、形式は異なります。 SAMLはマークアップ言語(XMLなど)であり、JWTはJSONです。

[〜#〜] saml [〜#〜][〜#〜] s [〜#〜]ecurity[〜#〜] a [〜#〜]ssertion[〜#〜] m [〜#〜]arkup[〜#〜] l [〜#〜]anguage)は、セキュリティドメイン間で認証および許可データを交換するためのオープンスタンダードです。つまり、 IdPIdentity[〜#〜] p [〜#〜]rovider)および[〜#〜] sp [〜#〜][〜#〜] s [〜#〜]ervice[〜#〜] p [〜#〜]rovider)。

  • IdPIdentity[〜#〜] p [〜#〜]rovider):ユーザーを認証し、成功した場合はサービスプロバイダーに認証アサーションを提供します。 IDプロバイダーはサービスとしてのユーザー認証を提供します。S
  • A[〜#〜] sp [〜#〜][〜#〜] s [〜#〜]サービス[〜#〜] p [〜#〜]rovider):IDプロバイダーに依存してユーザーを認証します。

Auth0のSAML

[〜#〜] jwt [〜#〜][〜#〜] j [〜#〜]SON[〜#〜] w [〜#〜]eb[〜#〜] t [〜#〜]oken)は、JSONオブジェクトとしてパーティ間で情報を安全に送信するためのコンパクトで自己完結型の方法を定義するオープンスタンダード(RFC 7519)です。この情報はデジタル署名されているため、検証および信頼できます。 JWTは、秘密(HMACアルゴリズムを使用)またはRSAを使用する公開/秘密キーペアを使用して署名できます。

Auth0のJWT

ユースケース

SAMLがアドレスする単一の最も重要なユースケースは、Webブラウザーのシングルサインオンです(SSO、つまり一度ログインしてトークンを取得し、他のサービスにログインする必要はありません)。シングルサインオンは、セキュリティドメイン内で(たとえば、Cookieを使用して)比較的簡単に実行できますが、セキュリティドメイン間でSSOを拡張することはより難しく、相互運用性のない独自技術が急増しました。相互運用性を促進するために、SAML WebブラウザーSSOプロファイルが指定および標準化されました。 (比較のため、最近のOpenID ConnectプロトコルはWebブラウザーSSOの代替アプローチです。)通常、コードサンプルでid_tokenと呼ばれる ID Token はJSON Web Token( JWT)ユーザープロファイル情報が含まれます。

4
Premraj