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

必須

email

エンドユーザーの優先電子メール・アドレス。

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)。

数値

必須