
![[8.5.5.4 以降]](../ng_v8554.gif)
OpenID Connect の認可エンドポイントの起動
OpenID Connect では、認可エンドポイントがユーザーの認証および認可を扱います。
始める前に
このタスクについて
認可エンドポイントは、OAuth 2.0 仕様と OpenID Connect 1.0 仕様の両方で規定されているパラメーターを含む認証要求を受け入れます。
Authorization Code Flow では、 認可エンドポイントは、認証および認可のために使用され、クライアントに認可グラントを返します。その後、クライアントは、この認可グラントを要求に入れて、 ID トークン、アクセス・トークン、およびリフレッシュ・トークンと交換に、トークン・エンドポイントに渡すことができます。Implicit Flow では、 認可エンドポイントは、認証および認可を実行するだけでなく、ID トークンおよびアクセス・トークンを応答に入れて直接クライアントに返すこともするため、 トークン・エンドポイントとの間では何もやりとりされません。
OpenID Connect が有効になった Liberty プロファイル・サーバーは、 以下の URL で OpenID Connect 認可エンドポイントにアクセスできます。
https://server.example.com:443/oidc/endpoint/<provider_name>/authorize
手順
タスクの結果
OpenID Connect プロバイダーは、クライアントから要求を受け取ると、 ユーザーを認証および認可しようとします。
Authorization Code Flow では、 認証および認可が成功した場合、OpenID Connect プロバイダーは認可コードを発行し、 そのコードをクライアントへの OAuth 2.0 認可応答にパラメーターとして組み込みます。初期要求が state を含んでいた場合、 認可応答にも初期要求に含まれていたのとまったく同じ state 値が含まれます。application/x-www-form-urlencoded 形式を使用して、 code パラメーターおよび state パラメーターが、 認可要求に指定された redirect_uri 値に照会パラメーターとして追加されます。
Implicit Flow では、 認証および認可が成功した場合、以下のパラメーターが認可エンドポイントから返されます。
- access_token: アクセス・トークン。初期要求の [response_type] 値が [id_token] でない場合、これが返されます。
- token_type: OAuth 2.0 トークン・タイプ。OpenID Connect では、この値は Bearer です。
- id_token: ID トークン。
- state: 認可要求に含まれる場合は必須。
- expires_in: (オプション) 応答が生成されてからのアクセス・トークンの有効期限 (秒単位)。
これらのパラメーターは、 Authorization Code Flow でのように照会パラメーターとしてではなく、認可要求に指定された redirect_uri 値のフラグメント・コンポーネントに追加されます。
例
Authorization Code Flow の要求例は次のとおりです。
GET /authorize?
response_type=code
&scope=openid profile email
&client_id=client01
&state=af0ifjsldkj
&redirect_uri=https://server.example.com:443/oidcclient/redirect/client01 HTTP/1.1
Implicit Flow の要求例は次のとおりです。
GET /authorize?
response_type=id_token token
&scope=openid profile
&client_id=client01
&state=af0ifjsldkj
&redirect_uri=https://server.example.com:443/oidcclient/redirect/client01
&nonce=n-0S6_WzA2Mj HTTP/1.1
Authorization Code Flow における認可エンドポイントからの応答例は次のとおりです。
HTTP/1.1 302 Found
Location: https://server.example.com:443/oidcclient/redirect/client01
code=SplxlOBeZQQYbYS6WxSbIA
&state=af0ifjsldkj
Implicit Flow における認可エンドポイントからの応答例は次のとおりです。
HTTP/1.1 302 Found
Location: https://server.example.com:443/oidcclient/redirect/client01
access_token=SlAV32hkKG
&token_type=Bearer
&id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso
&expires_in=3600
&state=af0ifjsldkj