web-dev-qa-db-ja.com

OpenID ConnectとOAuth 2.0?

OpenID ConnectはOAuth 2.0に基づいて構築されているため、OAuth 2.0で可能なことはすべてOpenID Connectでも可能であると想定しています。

特に、私のWebサイトには、ユーザーに属し、OpenID Connectを実装してユーザーを認証する情報が格納されているとしましょう。ユーザーが別のWebサイトを介して認証している場合、そのWebサイトは同じOpenID Connectフローを使用してユーザーから許可を取得し、私のWebサイト上のそのユーザーの情報へのアクセスを許可できます。

その声明は正しいですか? OpenID Connectとは関係なくOAuth 2.0を実装する必要があるシナリオはありますか?

6
Greg

簡単に言えば、それは未定義です。両方をサポートするライブラリが必要な場合は、OAuth 2とOIDCの両方をサポートすることを明示的に示していることを確認してください。

ベン図を描く場合、OAuth 2とOIDCは互いに交差しますが、OAuth 2はOIDCが拡張しないいくつかのフローも定義し、OIDCは追加しますOAuth 2.にないフロー。

OAuth 2フロー

  • Authorization Code Grant
  • 暗黙の付与
  • リソース所有者パスワード資格情報付与
  • クライアント資格情報の付与

OIDCフロー

  • Authorization Code Grant
  • 暗黙の付与
  • ハイブリッド

OIDC仕様は、明示的にOAuth 2の認証コードと暗黙のフローを拡張しますが、他のものについては何も述べていません。したがって、特定のOIDC実装は、残りのOAuth 2フロー。部分的には、OAuth 2のようにアクセストークンのみを返しますが、IDトークンは返しません。

では、なぜOIDCが明示的にすべてのOAuth 2フローをカバーしていないのですか?これが私が思うことです:

  • リソース所有者のパスワード資格情報付与。このフローは、OAuth 2の認証コード付与によって導入されたセキュリティ機能を無効にします。セキュリティの観点から、このフローから離れてください。
  • クライアント資格情報付与。このシナリオの1つの例は、PKIで解決できるサービス間通信です。OIDCによって導入されたIDトークンは必要ありません。
4
HTLee