新しい OpenID Connectプロバイダーによる動的なクライアント登録
OpenID Connect (OIDC) の依拠当事者 (RP) は、Dynamic Client Registration を使用して自身を OpenID Connectプロバイダー (OP) に登録できます。
始める前に
これは、 OpenID の「Connect Dynamic Client Registration」 1.0 の仕様に基づいています。
新しい OIDC アプリケーションは、テナント管理者、またはテナントに対する管理アクセス権限を持つユーザーによって作成されます。 また、動的なクライアント登録を通じて、OIDCアプリケーションを動的に作成することも可能になりました。
動的クライアント登録エンドポイントは、https://{{tenant}}/oauth2/registerにあります。
このタスクについて
動的なクライアント登録設定を構成し、登録APIを使用して新しいOIDCアプリケーションを動的に登録します。 このアプリケーションは、「 "OpenID Connect」または「 "OpenID Connect for Open Banking」のいずれかです。
動的なクライアント登録設定
動的クライアント登録の設定では、動的クライアント登録のデフォルト値を設定することができます。 「OIDCの動的クライアント登録設定の構成」 を参照してください。
関連する設定については、次の表に説明があります。
| フィールド | 説明 |
|---|---|
| 付与タイプ | 動的クライアント登録のペイロードに指定されていない場合に使用するグラントの種類。 対応している認証方式は、「認証コード」、「インプリシット」、「パスワード」、「リフレッシュトークン」、および「クライアント認証情報」です。 Open Bankingのレシピが「なし」でない場合、承認タイプ「パスワード」は使用できません。 |
| ID トークン・クレーム | 動的なクライアント登録ペイロードに指定がない場合、IDトークンおよびユーザー情報のデフォルト値が取得されます。 |
| トークン・クレーム | 動的なクライアント登録ペイロードで指定されていない場合、イントロスペクションおよびJWTアクセストークンに対するデフォルトのクレーム。 |
| アクセス・トークンのタイプ | 生成するアクセストークンの種類。 有効な値は「Default」と「JWT」です。 |
| ID トークン署名アルゴリズム | 動的なクライアント登録ペイロードに指定されていない場合、IDトークンの署名に使用されるアルゴリズム。 |
| ユーザーの同意 | 動的クライアント登録ペイロードに指定がない場合、ユーザーの同意を求めるかどうかを選択します。 |
| アクセス・トークン存続時間 | アクセストークンの有効期間(秒単位)。 最大値は2147483647、最小値は1です。 |
| リフレッシュ・トークン存続時間 | リフレッシュトークンの有効期間(秒単位)。 最大値は2147483647、最小値は1です。 |
| PKCE を強制的に検証 | 動的クライアント登録ペイロードに指定がない場合、PKCEを適用するかどうかを選択します。 |
| すべてのユーザーに資格を付与 | 動的クライアント登録ペイロードに指定がない場合、すべてのユーザーがこのクライアントを使用する権限を持っているかどうかを確認します。 |
| リクエストオブジェクトの有効期間 | リクエストオブジェクトの有効期間(秒単位)。 最大値は2147483647、最小値は1です。 |
| 要求オブジェクトには "exp" が必要 | リクエストオブジェクトにおいて「exp」属性が必須かどうかを指定します。 |
| カスタム・クライアント資格情報を許可 | カスタムクライアント認証情報の使用を許可するかどうかを指定します。 「false」に設定した場合、動的クライアント登録のペイロード内でクライアントIDおよびシークレットを指定することはできません。 |
| 許可された要求オブジェクト署名アルゴリズム | 署名付きリクエストJWTで使用可能な署名アルゴリズムの一覧。 設定されていない場合、サポートされているすべてのアルゴリズムが許可されます。 |
| 変換ルールの要求 | 動的クライアント登録要求を変更するためのルールを入力します。 設定されていない場合、動的クライアント登録リクエストには変更が加えられません。 |
| オープン・バンキングのレシピ | すべての動的顧客登録に適用するオープンバンキングのレシピ。 このフィールドが「なし」に設定されている場合、「 'OpenID Connect」アプリケーションが作成されます。 これ以外の値に設定された場合、「 'OpenID Connect for Open Banking」アプリケーションが作成されます。 |
設定の「ソフトウェアステートメント」、「認証の要求」、「アクセストークンの登録」の各セクションについては、「OIDC動的クライアント登録設定の構成」を参照してください。
動的クライアント登録にはベアラー・トークン認証が必要
動的なクライアント登録において、リクエスト認証がベアラートークン認証を必要とするように設定されている場合、初期アクセストークンが必要となります。
Manage OIDC client registration dynamically資格を持つ API クライアントを作成します。 APIクライアントを作成するには、 「アプリケーションのAPIアクセス管理」 を参照してください。
API クライアントを作成したら、client_credentials フローを使用してアクセス・トークンを取得します。 以下にコードの例を示します。
curl -ki -v https://{{tenant}}/v1.0/endpoint/default/token -d "grant_type=client_credentials&client_id=<clientId>&client_secret=<clientSecret>"
動的なクライアント登録リクエストでは、認証ヘッダーにベアラートークンを指定する必要があります。
動的クライアント登録には MTLS が必要
リクエストの認証が相互の TLS を必要とするように設定されている場合、クライアントはリクエスト時に有効な証明書を提示する必要があります。
登録APIを使用して新しいアプリケーションを登録する
以下の表に、現在サポートされているクライアント・メタデータのリストを示します。
| メタデータ名 | メタデータの説明 | オプション | 有効値 |
|---|---|---|---|
| client_name | アプリケーション名 | はい | ストリング |
| client_id | クライアント ID が指定されていない場合は、自動的に生成されます。 | はい | ストリング |
| client_secret | クライアント・シークレットが指定されていない場合は、自動的に生成されます。 | はい | ストリング |
| redirect_uris | リダイレクト URI のリスト | false | ストリング URI のリスト |
| grant_types | アプリケーションが使用できる付与タイプの配列。 | はい | 「authorization_code」、「implicit」、「password」、「refresh_token」、および「client_credentials」 |
| id_token_signed_response_alg | トークン署名アルゴリズム。 | はい | 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512' |
| all_users_entitled | このアプリケーションを使用する資格をすべてのユーザーに付与する場合は、true に設定します | はい | true または false |
| jwks_uri | クライアントの JSON Web Key Set ドキュメントの URL。 | はい | URL |
| consent_action | ユーザーの同意の要求。 | はい | 「never_prompt」または「always_prompt」 |
| enforce_pkce | PKCE の強制的な使用。 | はい | true または false |
| scope | 許可されたスコープのスペース区切りの文字列。 | はい | ストリング |
| id_token_claims | id_token およびユーザー情報のクレームのリスト。 | はい | ストリングのリスト |
| token_claims | イントロスペクトおよび JWT アクセス・トークンのクレームのリスト。 | はい | ストリングのリスト |
| initiate_login_uri | ログインを開始する URL。 | はい | URL |
| 応答タイプ | このクライアントで使用されるレスポンスの種類。 | はい | ストリングのリスト |
| token_endpoint_auth_method | トークン・エンドポイントのクライアント認証方式。 | はい | 'default'、'client_secret_basic '、'client_secret_post'、'private_key_jwt '、'tls_client_auth' |
| tls_client_auth_subject_dn | クライアントが相互 TLS 認証で使用する証明書の、期待されるサブジェクトの識別名。 | はい | ストリング |
| Tls_client_auth_san_dns | クライアントが相互 TLS 認証で使用する証明書内の、期待されるDNS名SANエントリ。 | はい | ストリング |
| tls_client_auth_san_uri | クライアントが相互 TLS 認証で使用する証明書内の、期待されるURI SANエントリ。 | はい | ストリング |
| Tls_client_auth_san_ip | クライアントが相互 TLS 認証で使用する証明書内の、期待されるIPアドレスSANエントリ。 | はい | ストリング |
| Tls_client_auth_san_email | クライアントが相互 TLS 認証で使用する、証明書内の予想されるメールアドレスのSANエントリ。 | はい | ストリング |
| tls_client_certificate_bound_access_tokens | アクセス・トークンの証明書バインディングが必要かどうかを示します。 | はい | true または false |
| userinfo_signed_response_alg | ユーザー情報の応答におけるJWT署名アルゴリズム。 | はい | 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512' |
| userinfo_encrypted_response_alg | ユーザー情報の応答におけるJWTの暗号化アルゴリズム。 | はい | 「RSA-OAEP」、「 RSA-OAEP-256 」 |
| userinfo_encrypted_response_enc | ユーザー情報の応答におけるJWTの暗号化アルゴリズム。 | はい | 'A128GCM', 'A192GCM', 'A256GCM' |
新規アプリケーションの登録の例
以下のコードは、動的クライアント登録がベアラー・トークンによる認証を必要とするように設定されている場合の、リクエストの例です。
curl -ki -H "Authorization: bearer <access-token>" -H "Content-Type:application/json" -X POST https://{{tenant}}/oauth2/register --data-binary '{"redirect_uris":["https://www.redirect.com"],"client_name":"MyApplication"}'
応答 (response)
{
"grant_types": [
"authorization_code"
],
"client_secret_expires_at": "0",
"registration_client_uri": "https://{{tenant}}/oauth2/register/<clientId>",
"client_secret": "<client_secret>",
"redirect_uris": [
"https://www.redirect.com"
],
"client_id_issued_at": "1586933118",
"client_name": "MyApplication",
"registration_access_token": "<access_token>",
"client_id": "<clientId>",
"id_token_signed_response_alg": "RS256"
}
アプリケーションの追加構成
アプリケーションの作成後、属性マッピング、アクセスポリシー、IDソース、権限を持つユーザーなど、アプリケーションに関するその他の設定を行うことができます。 これらのオプションを設定するには、 「 OpenID Connect」アプリケーションでのシングルサインオンの設定、または 「 OpenID Connect for Open Banking」アプリケーションでのシングルサインオンの設定を参照してください。
登録APIを使用してOIDCアプリケーションを更新する
以下のコードは、前の手順で取得した認証ベアラー・トークンを registration_access_token 使用し、クライアントを変更するためのPUTリクエストを送信する例です。 OIDCアプリケーションの設定を変更すると、その変更内容が上書きされる点にご注意ください。
curl -ki -H "Authorization: bearer <registration_access_token>" -H "Content-Type:application/json" -X PUT https://{{tenant}}/oauth2/register/<client-id> --data-binary '{"redirect_uris":["https://www.redirect.com/callback"],"client_name":"MyApplication2"}'
登録 API を使用した OIDC アプリケーションの読み取り
登録 API では、OIDC アプリケーションを再度読み取ることもできます。
curl -ki -H "Authorization: bearer <registration-access-token>" https://{{tenant}}/oauth2/register/<clientId>
登録APIを使用してOIDCアプリケーションを削除する
登録 API では、OIDC アプリケーションを削除することもできます。
curl -ki -H "Authorization: bearer <registration-access-token>" -X DELETE https://{{tenant}}/oauth2/register/<clientId>
登録アクセス・トークンの有効期限切れ
登録済みのアクセストークンの有効期限が切れた場合は、登録済みのクライアントのクライアントIDとシークレットを使用して、新しいアクセストークンを取得してください。 「初期アクセストークンの取得」 を参照してください。