OpenID Connect の UserInfo エンドポイントの起動

UserInfo エンドポイントは、OpenID Connect 認証で認証されたユーザーについてのクレームを返します。

このタスクについて

ユーザーについてのクレームを取得するため、クライアントはクレデンシャルとしてアクセス・トークンを使用することによって UserInfo エンドポイントに要求を行います。 そのアクセス・トークンは、OpenID Connect 認証を介して取得したものでなければなりません。そのアクセス・トークンによって表されるユーザーについてのクレームは、 クレームの名前と値のペアの集合を含んでいる 1 つの JSON オブジェクトとして返されます。UserInfo エンドポイントは OAuth 2.0 保護リソースです。 これは、このエンドポイントにアクセスするのに必要なクレデンシャルがアクセス・トークンであることを意味します。

UserInfo エンドポイントによって返されるクレームは OpenID Connect プロバイダー構成でカスタマイズできます。 『UserInfo エンドポイントによって返されるクレームの構成』を参照してください。

OpenID Connect が有効になった WebSphere® Application Server traditional サーバーは、以下の URL で OpenID Connect UserInfo エンドポイントにアクセスできます。
https://server.example.com:443/oidc/endpoint/<provider_name>/userinfo
トラブルの回避: アウトバウンド・プロキシーを使用している場合、プロキシー・ホストを介して要求を自動的に転送する手段は OpenID Connect RP では提供されないことに注意してください。

OpenID Connect プロバイダー (OP) へのアクセスにプロキシーを使用する必要がある場合は、OP 関連の URL プロパティーに入力する値には、外部 OP のホストおよびポートではなく、プロキシーのホストおよびポートが含まれる必要があります。

ほとんどの場合、OP のホストおよびポートを、プロキシーのホストおよびポートに置き換えることができます。入力する URL は、RP およびクライアント (ブラウザーまたはアプリケーション) の両方に可視でなければなりません。使用する正しい URL を決定する方法について詳しくは、プロキシー管理者にお問い合わせください。

この例では、クライアントは SSL ポートが 443 に設定されると予期しています。

手順

  1. OpenID Connect 認証を介して取得されたアクセス・トークンを使用して認証をセットアップします。アクセス・トークンは、 HTTP Basic Authorization ヘッダーに入れるか、access_token 要求パラメーターで指定できます。どちらの場合でも、アクセス・トークンのエンコードは不要です。
  2. GET 要求または POST 要求を UserInfo エンドポイント URL に送信します。

タスクの結果

上の手順を完了すると、『例』セクションに示されているように、 UserInfo エンドポイントに送信される有効な HTTP 要求が生成されます。

要求が有効であれば、UserInfo エンドポイントは、application/json 形式の JSON オブジェクトとともに HTTP 200 応答を返し、 このオブジェクトには OpenID Connect プロバイダー用に構成されたクレームが含まれます。

以下の例は、有効なトークンが使用された要求と無効なトークンが使用された要求を示します。

  • HTTP Bearer Authorization ヘッダーを使用してアクセス・トークンを渡す要求
  • 有効なアクセス・トークンの場合の応答
  • 無効なアクセス・トークン
HTTP Bearer Authorization ヘッダーを使用してアクセス・トークンを渡す要求の例:
POST /register HTTP/1.1
Accept: application/x-www-form-urlencoded
Authorization: Bearer fAAdLO1c6QWDbPs9HrWHz5e7nRWVAnxqTTP7i88G
access_token 要求パラメーターを使用してトークンを渡すこともできます。
 POST /register HTTP/1.1
 Accept: application/x-www-form-urlencoded
     access_token=fAAdLO1c6QWDbPs9HrWHz5e7nRWVAnxqTTP7i88G

HTTP 要求パラメーターは機密情報を含むことができ、ブラウザー履歴またはキャッシュに保存されることがあるため、 access_token 要求パラメーターを使用するのではなく、 HTTP Authorization ヘッダーを使用するのがベスト・プラクティスです。

アクセス・トークンが有効な場合の応答例を以下に示します。sub クレームと groupIds クレームは常に返されます。ここに示されている他のクレームは、OpenID Connect プロバイダーのデフォルトのクレームです。
 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
 Pragma: no-cache
{
   "sub"          : "bob",
   "groupIds"     : [ "bobsdepartment","administrators" ], 
   "given_name"   : "Bob",
   "name"         : "Bob Smith",
   "email"        : "bob@mycompany.com",
   "phone_number" : "+1 (604) 555-1234;ext5678",
   "address"      : { "formatted" : "123 Main St., Anytown, TX 77777" },
   "picture"      : "http://mycompany.com/bob_photo.jpg"
}
無効なアクセス・トークンの場合、UserInfo エンドポイントは HTTP 401 状況コードと、WWW-AUTHENTICATE ヘッダーに含まれたエラー・メッセージを返します。
HTTP/1.1 401 Unauthorized
CONTENT-LENGTH : 0
WWW-AUTHENTICATE : Bearer error=invalid_token,       
   error_description=CWWKS1617E: A userinfo request was made with
       an access token that was not recognized. The request URI was
          /oidc/endpoint/MyOAuthProvider/userinfo.

トピックのタイプを示すアイコン タスク・トピック

ファイル名: twlp_oidc_userinfo_endpoint.html