OpenID Connect Core 1.0
概要
エンドユーザー (End-User) に関する情報を伝達するための Claims の利用
導入
OAuth 2.0 認可フレームワーク (RFC 6749) および OAuth 2.0 ベアラートークン使用法 (RFC 6750) 仕様は、第三者 (サードパーティ) アプリケーションが HTTP リソースへの限定アクセスを取得して使用するための一般的なフレームワークを提供する これらの仕様では、リソースアクセスのためのアクセストークンの取得と利用について定められているが、ID 情報を提供するための標準的な方法は定義されていない
クライアントは、認可リクエストに openid スコープ値を含めることで、この拡張機能の使用を要求する
他の方法で構成情報を取得しても良い
フローの概要
抽象的には以下のステップ
1. The RP (Client) sends a request to the OpenID Provider (OP).
2. The OP authenticates the End-User and obtains authorization.
3. The OP responds with an ID Token and usually an Access Token.
4. The RP can send a request with the Access Token to the UserInfo Endpoint.
5. The UserInfo Endpoint returns Claims about the End-User.
https://gyazo.com/1c6598f3fbea84e20b3e906975f47753
ID Token
ID トークンは、クライアントの使用時に認可サーバーがエンドユーザーを認証することに関するクレーム、および場合によっては他の要求されたクレームを含むセキュリティトークン
ID トークンには他のクレームが含まれている場合がある
使用されているクレームが理解できない場合は、無視する必要がある
この仕様で定義されている追加のクレームについては、セクション 3.1.3.6、3.3.2.11、5.1、および 7.4 に書かれている
ID トークンは、JWS を使用して署名する必要がある オプションで署名してから暗号化する場合はそれぞれ JWS と JWE を使用して暗号化し、セクション 16.14 に従って認証、整合性、否認防止、オプションで機密性を提供する ID トークンが暗号化されている場合は、署名してから暗号化する必要がある
結果は JWT で定義されているネストされた JWT になる ID トークンは、使用される応答タイプが認可エンドポイントから ID トークンを返さず (認可コード フローを使用する場合など)、クライアントが登録時に none の使用を明示的に要求しない限り、alg 値として none を使用してはならない
ID トークンは、JWS または JWE x5u、x5c、jku、または jwk ヘッダーパラメータフィールドを使用してはならない
代わりに、使用されるキーへの参照は、セクション 10 に従って、検出および登録パラメータを使用して事前に伝達される
認証
サーバーによる認証結果は、ID トークンで返される
認証のフローは以下のいずれか
認可コードフロー (response_type=code)
コードを受け取り、コードをトークンと交換する
トークンをユーザーやユーザーエージェントに知らせないことが可能
暗黙的フロー (response_type=id_token token または response_type=id_token)
ユーザーエージェント上のスクリプトが利用するような想定
直接トークンを受け取るので、トークンがユーザーやユーザーエージェントに知られる
ハイブリッドフロー (OAuth 2.0 Multiple Response Type Encoding Practices OAuth.Responses で定義されている他のレスポンス タイプ値を使用) フローによって、ID トークンとアクセストークンをクライアントに返す方法が決まる
フローは、認可リクエストの response_type 値によって決まる (code、id_token、token)
https://gyazo.com/d3a44f34a78a14180566702b57587e47
第三者 (サードパーティ) からのログイン開始