メインコンテンツへスキップ
テナントに対して、サードパーティーのアプリケーションを動的に登録することができます。この機能は、OpenID Connect Dynamic Client Registrationの仕様に基づいています。

動的なクライアント登録を有効にする

Auth0は オープンな動的登録 をサポートしています。つまり、この機能を有効にすると、 誰でも トークンなしでテナント内にアプリケーションを作成できるようになります。
デフォルトで、動的なアプリケーション登録はすべてのテナントで無効になっています。これを変更するには、テナントの設定でenable_dynamic_client_registrationフラグをtrueに設定する必要があります。 このためには、[Dashboard]>[Settings(設定)]>[Advanced(詳細)]の順に移動し、[OIDC Dynamic Application Registration(OIDCの動的なアプリケーション登録)] を有効にします。 または、 /Tenant/patch_settingsエンドポイントを使用してこのフラグを更新することができます。
curl --request PATCH \
  --url 'https://{yourDomain}/api/v2/tenants/settings' \
  --header 'authorization: Bearer API2_ACCESS_TOKEN' \
  --header 'cache-control: no-cache' \
  --header 'content-type: application/json' \
  --data '{ "flags": { "enable_dynamic_client_registration": true } }'
update:tenant_settingsスコープを含む有効なトークンで、API2_ACCESS_TOKENを更新する必要があります。詳細については、「Management APIのアクセストークン」をお読みください。

動的なクライアント登録を使用する

このセクションでは、どのようにアプリケーションを動的に登録し、設定することができるかをご紹介します。

アプリケーションの登録を

Auth0でアプリケーションを動的に登録するには、HTTP POSTメッセージをアプリケーション登録エンドポイントhttps://{yourDomain}/oidc/registerに送信する必要があります。Auth0は Open Dynamic Registration(オープンな動的登録) に対応しており、エンドポイントはアクセストークンなしに登録要求を受け入れます。 My Dynamic application」という名前で、コールバックURLがhttps://application.example.com/callbackhttps://application.example.com/callback2に指定されているアプリケーションを作成するには、以下のスニペットを使用します。
curl --request POST \
  --url 'https://{yourDomain}/oidc/register' \
  --header 'content-type: application/json' \
  --data '{"client_name":"My Dynamic Application","redirect_uris": ["https://application.example.com/callback", "https://application.example.com/callback2"]}'
ここでは、
  • client_name :作成するDynamic Application(動的アプリケーション)の名前
  • redirect_uris (必須):Auth0が認証フローの終了時に呼び出すのに有効であるとみなすURLの配列
または、token_endpoint_auth_methodの値を設定することができます。これは、noneまたはclient_secret_post(デフォルト値)のいずれかで指定します。SPAを作成する場合、要求のペイロードでtoken_endpoint_auth_method: noneを使用します。 応答には基本的なアプリケーション情報が含まれます。
HTTP/1.1 201 Created
Content-Type: application/json
{
  "client_name": "My Dynamic Application",
  "client_id": "8SXWY6j3afl2CP5ntwEOpMdPxxy49Gt2",
  "client_secret": "Q5O...33P",
  "redirect_uris": [
    "https://application.example.com/callback",
    "https://application.example.com/callback2"
  ],
  "client_secret_expires_at": 0
}
ここでは、
  • client_id :一意のクライアント識別子。アプリケーションでAuth0を使用するよう構成するときに使用するIDです。これはシステムで生成され、変更することはできません。
  • client_secret :英数字の64ビットのクライアントシークレット。Authentication API /tokenへの認証と、IDトークンの検証にアプリケーションで使用される値です。
  • client_secret_expires_atclient_secretが期限切れする時刻。Auth0では、この値は常にゼロ(0)で、アプリケーションが期限切れになることはありません。
クライアントIDとクライアントシークレットは、認証および認証フローの実行に最も重要な要素であるため、メモしておいてください。詳細については、「認証フローと認可フロー」をお読みください。 さらに、サードパーティーの開発者がアプリケーション設定を変更することはできないことに留意します。必要な場合は、その要求に関して、テナント所有者に問い合わせる必要があります。

アプリケーションを構成する

クライアントIDとシークレットが揃ったら、Auth0でユーザー認証を行うためにアプリケーションを構成することができます。 簡単なサンプルを通じて、暗黙的フローを使用してクライアント側のWebアプリからAPIを呼び出す方法をご紹介します。 まず、ユーザーを認可URLに送信するようにアプリケーションを構成する必要があります。
https://{yourDomain}/authorize?
  audience={API_AUDIENCE}&
  scope={SCOPE}&
  response_type={RESPONSE_TYPE}&
  client_id={yourClientId}&
  redirect_uri={https://yourApp/callback}&
  nonce={NONCE}
  state={OPAQUE_VALUE}
ここでは、
  • (任意):アプリケーションがユーザーに代わってアクセスを要求しているターゲットAPI。APIアクセスが必要な場合、このパラメーターを設定します。
  • scope(任意):認可を要求したいスコープ。スペースで区切る必要があります。ユーザーの標準OIDCスコープprofileemailなど)、名前空間の形式に準拠しなければならないカスタムクレーム、またはターゲットAPIでサポートされているスコープ(read:contactsなど)を要求することができます。APIアクセスが必要な場合、このパラメーターを設定します。詳細については、「APIスコープ」をお読みください。
  • response_type:応答タイプ。暗黙的な付与の場合、tokenまたはid_token tokenを使用することができます。これで、フローの終了時に受け取るトークンの種類が指定されます。tokenを使用してアクセストークンのみを取得するか、id_token tokenを使用してIDトークンとアクセストークンの両方を取得します。
  • client_id:アプリケーションのクライアントID
  • redirect_uri:認可がユーザーによって付与された後、認可サーバー(Auth0)がユーザーエージェント(ブラウザー)をリダイレクトするURL。アクセストークン(および任意でIDトークン)は、このURLのハッシュフラグメントで使用することができます。このURLは、アプリケーションの [Application Settings(アプリケーション設定)] で有効なコールバックURLとして指定される必要があります。
  • state:アプリケーションにリダイレクトするときに認可サーバーに含まれる初期要求にアプリケーションが追加する不透明な値。この値は、CSRF攻撃を防ぐためににアプリケーションで使用される必要があります。
  • :Auth0からのIDトークンの要求に含まれる文字列値で、トークンのリプレイ攻撃を防ぐのに使用されます。response_type=id_token tokenに必要です。
例:
<a href="https://{yourDomain}/authorize?scope=appointments%20contacts&audience=appointments:api&response_type=id_token%20token&client_id={yourClientId}&redirect_uri={https://yourApp/callback}">
  Sign In
</a>
この呼び出しによってユーザーはAuth0にリダイレクトされ、認証に成功すると、アプリケーションに戻ります(具体的にはredirect_uri にリダイレクトされます)。 APIアクセスを必要とする場合は、認証後にURLのハッシュフラグメントからアクセストークンを抽出し、これを使ってAPIへのを呼び出しを行う必要があります。そのためには、アクセストークンをHTTP要求のAuthorizationヘッダーでBearerトークンとして渡します。

もっと詳しく

I