ハイリーレギュレーテッドアイデンティティ機能を使用するには、エンタープライズプランとハイリーレギュレーテッドアイデンティティアドオンが必要です。詳細については、「Auth0の価格設定」を参照してください。
前提条件
JARを使用するには、まずRSAキーペアを生成する必要があります。次に、JWTで保護された認可要求の構成の説明に従って、公開鍵をAuth0に登録します。 認可コードフロー中に、クライアントアプリケーションは/authorizeまたは/oauth/parエンドポイントに送信するパラメーターを取得し、それらをJSON Webトークン (JWT)にラップして、秘密鍵を使用して署名します。
認可サーバーは、アプリケーションの公開鍵を使用して署名を検証します。署名が有効な場合、認可サーバーは JARから要求パラメータを抽出し、通常どおり要求を処理します。その結果、パラメータ値は既知のソースから取得されることが保証され、仲介者によって改ざんされたりアクセスされたりすることはできません。
JAR要求を生成する
JAR要求を生成するには、まず JSON Webトークン(JWT)を作成する必要があります。Auth0 JWTライブラリを使用すると、好みの言語でを生成できます。ヘッダー
JAR要求の場合、JWTヘッダーには次のフィールドが含まれている必要があります:alg:JWTに署名するために使用されるアルゴリズム。RS256、RS384、またはPS256のいずれかである必要があります。typ:JWTの種類です。jwtまたはoauth-authz-req+jwtのいずれかである必要があります。
kidフィールドも含まれる場合があります。kid が存在する場合、Auth0はJAR構成中に登録された、一致するキーIDを持つ公開鍵を探し、そのキーを使用してJWTの署名を検証します。
ペイロード
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バイト以下の文字列である必要があります。
JWTの生成例
次のJavaScriptコードサンプルは、JavaScriptおよびjsonwebtokenライブラリを使用してJWTを構築および署名する方法を示しています。生成されたJWTをコンソールに出力します:認可エンドポイントを呼び出す
署名されたJWTを使用して/authorizeエンドポイントを呼び出すには、新しいブラウザウィンドウを開きます。クライアントIDをclient_idパラメータとして渡し、署名およびURLエンコードされたJWTをrequestパラメータとして渡します。