web-dev-qa-db-ja.com

OAuthを使用したSAMLとフェデレーションログイン

SAMLとOAuthを使用したフェデレーションログインの違いは何ですか?企業がサードパーティのWebアプリを使用したいが、シングルサインオンと認証機関になることを望む場合、どのソリューションがより理にかなっていますか?

95
Chung Wu

彼らはさまざまな問題を解決します。

[〜#〜] saml [〜#〜]は、誰に関する情報を共有するために定義された一連の標準ですユーザーとは、ユーザーの属性セットであり、何かへのアクセスを許可/拒否する方法、または認証を要求する方法を提供します。

OAuthは、何かへのアクセスの委任に関するものです。基本的に、誰かがあなたのように「行動する」ことを許可しています。最も一般的に使用されるのは、ユーザーに代わって何かを実行できるアクセスAPIを許可するためです。

それらは2つのまったく異なるものです。


役立つかもしれないいくつかの例。

OAuthはTwitterを思い浮かべます。 Google Buzz とTwitterを使用しており、2つの同期を維持できるアプリを作成するとします。基本的に、アプリとTwitterの間に信頼を確立できます。初めてアプリをTwitterにリンクするときに、クラシックプロンプトを実行してTwitterにログインすると、その確認ボックスがポップアップ表示され、「"アプリ名"へのアクセスを許可しますか?」 「はい」をクリックすると信頼が確立され、アプリがTwitterであなたのように動作できるようになります。投稿を読んだり、新しい投稿を作成したりできます。

SAML-SAMLの場合、2つの無関係なメンバーシップシステム間のある種の「合意」について考えてください。この場合、US AirwaysとHertzを使用できます。あるサイトから別のサイトに移動できる資格情報の共有セットはありませんが、HertzがUSエアウェイズに「取引」を提供したいと言ってみましょう。 (これが極端な例であることは承知していますが、私にはご容赦ください)。フライトを購入した後、会長メンバーに無料のレンタカーを提供します。 USエアウェイズとヘルツは、何らかの形の信頼と、ユーザーを識別する何らかの方法を設定します。私たちの場合、「フェデレーションID」は電子メールアドレスであり、US Airways IDプロバイダーが正確で安全な方法でトークンを配信することがHertzが信頼する一方向の信頼セットになります。フライトを予約した後、USエアウェイズのIDプロバイダーはトークンを生成し、ユーザーの認証方法と、この場合の個人に関する「属性」を設定します。最も重要な属性は、USエアウェイズのステータスレベルです。トークンが読み込まれると、何らかの種類の参照を介して渡されるか、URLにエンコードされ、Hertzに到達すると、トークンを確認して検証し、無料のレンタカーを許可できるようになります。

このSAMLの例の問題は、多くの中で唯一の特殊なユースケースであるということです。 SAMLは標準であり、SAMLを実装する方法はほぼ多すぎます。


あるいは、承認を気にしない場合は、SAMLおよび OpenID を介して認証をアサートするとほぼ主張できます。

125
Nix

この簡単な説明 をご覧ください:

SAML、OpenID、OAuthの違いについて多くの人が混乱していますが、実際には非常に簡単です。多少の重複はありますが、ここでは3つを区別する非常に簡単な方法を示します。

OpenID –消費者向けのシングルサインオン

SAML –エンタープライズユーザー向けのシングルサインオン

OAuth –アプリケーション間のAPI認証

OOデザインパターンに慣れている人にとっては、ラッパーパターンへの素敵な帰結があると思います。ファサードデコレーターおよびProxyパターン。基本的にこれらはすべて同じで、単なるラッパーです...違いはintention各パターンの

同様に、SAML、OAuthおよびOpenIDはすべて異なる意図を介して共通の基本的なメカニズム、プライベートインタラクションのためのサービスプロバイダー/ ID機関へのリダイレクトであり、その後に発信元のサードパーティアプリへのリダイレクトが続きます。

ネットを見ると、プロトコルの機能が重複していることがわかります。 OAuthによる認証 は完全に合理的です。 SSO over OAuthはあまり意味をなさないかもしれませんが、SAMLとOpenIDはフェデレーションIDに特化しています。

質問自体に、企業のコンテキストでは、SAMLはOAuth SSOよりも適切に聞こえます。コーポレートアイデンティティと統合したいサードパーティのアプリを見ると、すでにSAML/LDAP/Radiusなどと統合するように設計されていることがわかります。IMOOAuth is more大規模な企業環境でのアプリケーションまたはおそらくサービス指向アーキテクチャを構成するアプリケーション間のインターネット相互作用に適しています。

承認規則は、企業環境で他の方法でも指定できます。 LDAPはこのための一般的なツールです。ユーザーをグループに編成し、アプリケーションの特権をグループのメンバーシップに関連付けることは、広範囲にわたるアプローチです。そのため、LDAPは認証にも使用できます。 Active Directoryは良い例ですが、私はOpenLDAPを好みます。

37
quickshiftin

彼らは微妙なユースケースを処理します

  • SAML-ユーザーの資格情報(SSOなど)をさまざまなサービスプロバイダー(WebやWebサービスなど)に共有する
  • OAuth-ユーザーに代わってリソースにアクセスするためにアプリを委任するユーザー
2
yudis

SAMLには、他のユーザーがサイトに「ログイン」できるようにするためのさまざまな「プロファイル」があります。 SAML-PまたはSAML Passiveは非常に一般的であり、設定は非常に簡単です。 WS-Trustも同様であり、Webサイト間のフェデレーションも可能です。

OAuthは承認用に設計されています。詳細はこちらをご覧ください:

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

2

良い記事が見つかりました こちら

enter image description here

SAML(セキュリティアサーションマークアップ言語)は、シングルサインオン(SSO)、フェデレーション、およびID管理を達成するための一連の標準です。

:ユーザー(プリンシパル)は、シャトル予約Webサイト、ShuttlerでSAML経由でSSOが構成されたフライト予約Webサイト、AirFlyer(IDプロバイダー)で認証します(サービスプロバイダー)。フライヤーに認証されると、ユーザーは認証を必要とせずにシャトルをシャトルで予約できます

OAuth(Open Authorization)は、リソースの承認の標準です。認証は扱いません。

:ユーザーが一時的なアクセストークンまたはキーを送信するInstagramアカウント(OAuthプロバイダー)から写真をインポートできる写真共有モバイルアプリ(OAuthコンシューマー)数時間後に期限切れになる写真共有アプリに。

2
Jack Ryder

SAMLは認証用です-主にSingle Sign Onシナリオで使用されます。 OAuthは、リソース表現の承認用です。

JSON Web Token(JWT) は、SAML XMLトークンの代替です。 JWTはOAuthで使用できます

適切なリファレンスは SAML vs. OAuth:どっちを使うべき?

1
Lijo

フェデレーションという用語は、実際にはシステム間の接続IDを意味します。 SSOに関連していますが、まったく同じではありません。 フェデレーションが本当に何を意味するのかという点で、このブログ投稿は本当に役に立ちました。

0
Jake miyazaki