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 プロバイダー (OP) へのアクセスにプロキシーを使用する必要がある場合は、OP 関連の URL プロパティーに入力する値には、外部 OP のホストおよびポートではなく、プロキシーのホストおよびポートが含まれる必要があります。
ほとんどの場合、OP のホストおよびポートを、プロキシーのホストおよびポートに置き換えることができます。入力する URL は、RP およびクライアント (ブラウザーまたはアプリケーション) の両方に可視でなければなりません。使用する正しい URL を決定する方法について詳しくは、プロキシー管理者にお問い合わせください。
この例では、クライアントは SSL ポートが 443 に設定されると予期しています。
手順
タスクの結果
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:8020/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:8020/oidcclient/redirect/client01
&nonce=n-0S6_WzA2Mj HTTP/1.1
Authorization Code Flow における認可エンドポイントからの応答例は次のとおりです。
HTTP/1.1 302 Found
Location: https://server.example.com:8020/oidcclient/redirect/client01
code=SplxlOBeZQQYbYS6WxSbIA
&state=af0ifjsldkj
Implicit Flow における認可エンドポイントからの応答例は次のとおりです。
HTTP/1.1 302 Found
Location: https://server.example.com:8020/oidcclient/redirect/client01
access_token=SlAV32hkKG
&token_type=Bearer
&id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso
&expires_in=3600
&state=af0ifjsldkj