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)。 |
数値 |
必須 |