36 OpenIDConnectの理解
OpenIDConnectは、OAuth 2.0認可プロセスの拡張機能として認証を実装します。認可リクエストにopenidスコープ値を含めて、クライアントがこの拡張機能の使用をリクエストします。
ノート:
OpenIDConnectでは外部資格証明コレクタ(DCC)の使用がサポートされていません。「Access Manager資格証明コレクションの概要」も参照してください。OpenIDConnectはid_tokenの形でエンドユーザーに関する情報を提供します。このトークンでユーザーのアイデンティティを検証し、エンドユーザーに関する基本的なプロファイル情報を提供します。OpenIDConnectはOAM 12cBP01インストール・プロセス中にデフォルトで有効になります。
この節では、以下のトピックについて説明します。
関連項目:
36.1 OpenIDConnectトークンについて
OpenIDConnectではトークン(OpenIDConnect IDトークン)が生成されます。
OAuthのアクセス・トークンとリフレッシュ・トークンに加え、OpenIDConnectではアイデンティティ・トークン(IDトークン)が考慮されます。OAuth 2.0でエンドユーザーを認証するために、OpenIDConnectにより拡張されたのがIDトークンのデータ構造です。
参照
36.1.1 OpenIDConnectのIDトークン
IDトークンはセキュリティ・トークンです。クライアントを使用するときの認可サーバーによるエンドユーザー認証に関するクレーム(および場合によっては他のリクエストされたクレーム)が含まれます。
IDトークンのクレームにはサブジェクト、発行者、オーディエンスおよびタイムスタンプが含まれます。次の表に、OpenIDConnectで使用されるすべてのOAuth 2.0フローにおけるIDトークン内のクレームを示します。
表36-1 OpenIDConnectで使用されるIDトークン内のクレーム
| フィールド | 説明 | タイプ | 必須/オプション |
|---|---|---|---|
|
iss |
レスポンスの発行者の発行者識別子。 |
文字列 |
必須 |
|
sub |
サブジェクト識別子。 |
文字列 |
必須 |
|
aud |
このIDトークンの対象となるオーディエンス。 |
文字列 |
必須 |
|
exp |
有効期限。この時刻以降はIDトークンを処理のために受け入れることはできません。 |
文字列 |
必須 |
|
iat |
JWTが発行された時刻。 |
文字列 |
必須 |
|
auth_time |
エンドユーザーの認証が発生した時刻。 |
文字列 |
必須 |
|
Nonce |
クライアント・セッションとIDトークンの関連付け、およびリプレイ攻撃の軽減のための値。 |
文字列(大/小文字が区別される) |
必須 |
|
acr |
認証レベルの値。 |
文字列(大/小文字が区別される) |
オプション。 |
|
amr |
密接な関係がある認証方式のファミリの識別子。認証方式の参照値に関する項を参照。 |
文字列の配列(大/小文字が区別される) |
オプション。 |
|
azp |
アクセス・トークンを使用してリソースをリクエストする対象パーティの識別子。 |
文字列(大/小文字が区別される) |
オプション。 |
|
sid |
セッション識別子と詳細を含む暗号化されたトークンの値。 |
文字列(大/小文字が区別される) |
オプション。 |
ノート:
nonce値は変更されずに認証リクエストからIDトークンに渡されます。IDトークン内に存在する場合、nonceクレーム値が、認証リクエストで送信されるnonceパラメータ値と等しいことをクライアントで検証する必要があります。認証リクエストに存在する場合、認可サーバーはnonceクレームをIDトークンに含める必要があります。その際、クレーム値は認証リクエストで送信されるnonce値と同一の必要があります。認可サーバーは、使用されるnonce値に対してこれ以外の処理は実行できません。IDトークンのクレーム・セットのサンプル:
{
"iss": "http://host1:14100/oauth2",
"sub": "weblogic",
"aud": ["MDCClient19","http://host1:14100/oauth2"],
"exp": 1509626702,
"iat": 1509623102,
"auth_time": "1509623099159",
"jti": "_UC4Ew-NUTYQsMOXCoMo0g",
"at_hash": "5CnkOBb_Mk28GYJlhC_Srg",
"azp": "MDCClient19",
"acr": "2",
"sid": "gO5pDtJFt+7bH/YQC8QpUQ==~teJOlstvBcUXT8xXcmaIG1ppGMAmBLKqPuJUKnzLyX3spmDtWwgDm/qj5hhoyPhSiqAghOgFmE+kpsm8esEEsbZht+L5dkL27JUSUbAGBBmwlR/8QlxLTE0cEoNJ+9aJ",
"amr": ["pwd"]
}36.2 クレーム
クライアントはエンドユーザーおよび認証イベントに関するクレームを取得します。標準的なクレームは、ユーザー情報レスポンスまたはIDトークンで返されるようリクエストできます。アクセス・トークンにe-mailおよびphone openid scopeが含まれる場合、これらのクレームはIDトークンに移入されます。エンドユーザーに関する他のクレームはユーザー情報エンドポイントから取得できます。
表36-2 OpenIDConnectで使用されるクレーム
| フィールド | 説明 | タイプ | 必須/オプション |
|---|---|---|---|
|
sub |
発行者におけるエンドユーザーの識別子。 |
string |
必須 |
|
name |
エンドユーザーの名前全体は表示可能な形式で、すべての名前部分(場合によっては役職と接尾辞)が含まれ、エンドユーザーのロケールとプリファレンスに従った順序になります。 |
string |
必須 |
|
given_name |
エンドユーザーの名。文化によって、複数の名がある場合はスペース文字で区切られます。 |
string |
必須 |
|
family_name |
エンドユーザーの姓。 文化によって、複数の姓がある場合はスペース文字で区切られます。 |
string |
必須 |
|
preferred_username |
エンドユーザーがクライアントでの使用を希望する短縮名(janedoeまたはj.doeなど)。 |
string |
必須 |
|
|
エンドユーザーの優先電子メール・アドレス。 |
string |
必須 |
|
email_verified |
エンドユーザーの電子メール・アドレスが検証済の場合はTrue。 エンドユーザーの電子メール・アドレスが検証済の場合はFalse。 |
boolean |
必須 |
|
gender |
エンドユーザーの性別(男性、女性またはその他)。 |
string |
必須 |
|
Locale |
エンドユーザーの場所。 |
文字列 |
必須 |
|
phone_number |
エンドユーザーの優先電話番号。 |
文字列 |
必須 |
|
phone_number_verified |
エンドユーザーの電話番号が検証済の場合はTrue。 エンドユーザーの電話番号が検証済の場合はFalse。 |
boolean |
必須 |
|
address |
エンドユーザーの優先住所。 |
JSONオブジェクト |
必須 |
|
updated_at |
エンドユーザーの情報の最終更新時刻。値はJSON数値で、1970-01-01T0:0:0Zから指定された日時までの秒数で表します(UTC)。 |
数値 |
必須 |