Highly Regulated Identity 機能を利用するには、Highly Regulated Identity のアドオンを含む Enterprise プランが必要です。詳細については、Auth0 Pricing を参照してください。
前提条件
- RSA キーペアを生成する
- JWT で保護された認可リクエストを設定する に記載されている手順に従って、公開キーを Auth0 Dashboard にアップロードして登録する
仕組み
scope や redirect_uri などのパラメーターを URL 内で平文として渡す代わりに、クライアントアプリケーションはそれらをリクエストオブジェクトとして署名付きの JSON Web Token (JWT) に格納します。
- 署名: クライアントアプリケーションは秘密キーを使って JWT に署名します。
- 検証: Auth0 Authorization Server は JWT を受け取り、登録済みの公開キーを使って署名を検証します。
- 処理: JWT が有効であれば、Auth0 Authorization Server はそこからパラメーターを取り出します。JAR とクエリ文字列の両方に同じパラメーターがある場合は、JAR 内の値が優先されます。
JAR リクエストを生成する
ヘッダー
alg: JWT の署名に使用するアルゴリズム。RS256、RS384、または PS256 のいずれかである必要があります。typ: JWT のタイプ。jwtまたはoauth-authz-req+jwtのいずれかである必要があります。
kid フィールドを含めることもできます。kid がある場合、Auth0 は JAR の設定 で登録された公開キーの中から、一致するキー 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エンドポイントを呼び出せます。