Highly Regulated Identity 機能を使用するには、Highly Regulated Identity アドオン付きの Enterprise Plan が必要です。詳細については、Auth0 Pricing を参照してください。
前提条件
- RSA 鍵ペアを生成する
- JWT で保護された認可リクエストを設定する の説明に従って、公開鍵を Auth0 Dashboard にアップロードして登録する
仕組み
scope や redirect_uri などのパラメーターを URL にプレーンテキストで渡す代わりに、クライアントアプリケーションはそれらをリクエストオブジェクトとして署名付きの JSON Web Token (JWT) に格納します。
- 署名: クライアントアプリケーションは、秘密鍵を使用して JWT に署名します。
- 検証: Auth0 認可サーバーは JWT を受け取り、登録済みの公開鍵を使用して署名を検証します。
- 処理: JWT が有効な場合、Auth0 認可サーバーはパラメーターを取り出します。同じパラメーターが JAR とクエリ文字列の両方に存在する場合は、JAR 内の値が優先されます。
JAR リクエストを生成する
ヘッダー
alg: JWT の署名に使用するアルゴリズム。RS256、RS384、または PS256 のいずれかである必要があります。typ: JWT のタイプ。jwtまたはoauth-authz-req+jwtのいずれかである必要があります。
kid フィールドを含めることもできます。kid が存在する場合、Auth0 は JAR configuration で登録された公開キーの中から一致するキー ID を持つものを探し、そのキーを使用して JWT の署名を検証します。
ペイロード
iss: アプリのclient_idを指定する必要がありますaud: プロトコルと末尾のスラッシュを含むテナントのドメインである必要があります。例:https://{YOUR_DOMAIN}.auth0.com/
/authorize の呼び出しに必要な必須パラメーターも含める必要があります。例:
client_id: これにもアプリのclient_idを指定する必要がありますresponse_type: 実行する フローを Auth0 に示します。認可コードグラントフローにはcodeを使用します。
audience、scope、state、redirect_uri など) を含めることもできます。
さらに、JWT には次の任意クレームを含めることができます。
iat: 数値形式の日付である必要があります。nbf: 過去の時点を表す数値形式の日付である必要があります。exp: 将来の時点を表す数値形式の日付である必要があります。jti: 64 バイト以下の文字列である必要があります。
コードサンプル: JAR を生成して署名する
- 標準 JAR リクエスト: 署名済み JWT を URL エンコードした文字列として、リクエストパラメーターに渡します。
- プッシュ型認可リクエスト: セキュリティを強化し、URL 長の制約を回避するために、PAR を使用します。
標準JARリクエスト
/authorize エンドポイントを呼び出すには、次の手順に従います。
- 新しいブラウザーウィンドウを開きます。
- を
client_idパラメーターに、署名してURLエンコードした JWT をrequestパラメーターに指定します。
/authorize エンドポイントを呼び出すには、次の手順を実行します。
- バックチャネルの
POSTリクエストで、JAR を/oauth/parエンドポイントに送信します。 - Auth0 は
request_uriを返します。これを使用して、通常の PAR フロー と同様に/authorizeエンドポイントを呼び出せます。