> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# JAR（JWT-Secured Authorization Request）を構成する

> アプリケーションにJWT-secured Authorization Requests（JAR）を構成する方法を説明します。

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

export const codeExample1 = `POST https://{yourTenant}.auth0.com/api/v2/clients/{yourClientId}/credentials
Authorization: Bearer <YOUR_ACCESS_TOKEN>
Content-Type: application/json
{
  "name": "My credentials for JAR",
  "credential_type": "public_key",
  "pem": "[YOUR PEM FILE CONTENT]",
  "alg": "RS256"
}`;

export const codeExample2 = `PATCH https://{yourTenant}.auth0.com/api/v2/clients/{yourClientId}
Authorization: Bearer <YOUR_ACCESS_TOKEN>
Content-Type: application/json
{
  "signed_request_object": {
    "credentials": [{"id": "[YOUR CREDENTIAL ID]"}]
  }
}`;

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  ハイリーレギュレーテッドアイデンティティ機能を使用するには、エンタープライズプランとハイリーレギュレーテッドアイデンティティアドオンが必要です。詳細については、「[Auth0の価格設定](https://auth0.com/pricing/)」を参照してください。
</Callout>

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-3" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JWT</Tooltip>-secured Authorization Requests（JAR）を使用すると、OAuth2認可要求パラメーターが単一のJWT要求パラメーターにパッケージ化され、整合性保護のため署名されます。

## 前提条件

JARを使用するようにアプリケーションを構成する前に、[RSA鍵ペアを生成する](/docs/ja-jp/secure/application-credentials/generate-rsa-key-pair)必要があります。

<Warning>
  資格情報の用途や目的ごとに個別のキーペアを生成する必要があります。たとえば、JAR認証と秘密鍵JWT認証の両方に同じキーペアを使用しないでください。
</Warning>

## アプリケーションに対するJARの構成

アプリケーションにJARを構成するには、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>または<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>を使用できます。

<Tabs>
  <Tab title="Auth0 Dashboard">
    Auth0 Dashboardを使用して、以前生成されたRSAキーでJARを使用するアプリケーションを構成します。

    1. [［Auth0 Dashboard］ > ［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に移動します。

    2. JARで使用したいアプリケーションを選択します。

    3. **［Application Settings（アプリケーションの設定）］** タブを選択します。

    4. **［Authorization Requests（認可要求）］** セクションで、**［Require JWT-Secured Authorization Requests（JWT保護の認可要求をする）］** を有効にします。

    5. 資格情報が割り当てられておらず、利用可能な資格情報がある場合、既存の資格情報の割り当てを要求されます。

           <Frame>
             <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=4800b3a35c1ee09ac47a0bf452ee885e" alt="Dashboard > Application > Settings > Assign Existing Credentials" data-og-width="792" width="792" data-og-height="690" height="690" data-path="docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?w=280&fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=2844f7ce6e7a937e76fe2d086d6b8064 280w, https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?w=560&fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=7763dfa59c47e153d5ddcef79538b310 560w, https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?w=840&fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=0d40c28bfbc9323daa4eb78459e763a0 840w, https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?w=1100&fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=02e9f948abb929ffe6f451a2da55d796 1100w, https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?w=1650&fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=2a0d807446e148bcb6fcc4628e7a72b1 1650w, https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/ccaa87631feab761d7d23c45a24674bf/Existing_Creds_-_Japanese.png?w=2500&fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=37b8858fb7987ae4b14e3f93ebe6c2ed 2500w" />
           </Frame>

    6. 新しい資格情報を割り当てることもできます。

           <Frame>
             <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=8b3fa0a64c1011f8a6c741398f9f5ca9" alt="Auth0 Dashboard > Applications > Settings > Assign New Credentials" data-og-width="702" width="702" data-og-height="366" height="366" data-path="docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?w=280&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=b32b7fb129af0abc6d44df2e51810d88 280w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?w=560&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=339c85ff8f677a2a1a7e1de8ecf6d5fc 560w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?w=840&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=fc125440ec0ebb506ecf8cf400bcf4f0 840w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?w=1100&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=46a15e97bf4ab11ffe3b52a82d454577 1100w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?w=1650&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=5b81551223ab7b4c8691d74064043370 1650w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/f5ec2e430514faef17fb06c6735a0c61/New_Creds_-_JP.png?w=2500&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=3cbdf68002215250eec7abf8668db9b9 2500w" />
           </Frame>

    7. 以前生成されたRSAキーペアをアップロードして、新しい資格情報を追加し、割り当ててください。要求された場合、次の情報を入力します：

       * **［Name（名前）］** ：資格情報を識別する名前
       * **［Public Key（公開鍵）］** ：PEM形式のX.509証明書の公開鍵
       * **［Algorithm（アルゴリズム）］** ：JAR署名のアルゴリズムを選択します
       * **［Expiration Date（有効期限）］** ：資格情報の有効期限を設定します
  </Tab>

  <Tab title="Management API">
    [Management API](https://auth0.com/docs/api/management/v2)で、`signed_request_object`クライアント構成プロパティを使用して、アプリケーションにJARを構成します。このオブジェクトプロパティには次のフィールドを含みます：

    * `required`：JARを使用するために、すべての認可要求を`/authorize`と`/oauth/par`に送ります。詳細については、「[JWT保護の認可要求を使用した認可コードフロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow/authorization-code-flow-with-jar)」と「[PARとJARを使用した認可コードフロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow/authorization-code-flow-with-par-and-jar)」をお読みください。
    * `credentials`：署名の検証に使用される資格情報IDの配列。

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      資格情報パラメーターは、新しいアプリケーションの作成時に資格情報作成をサポートする秘密鍵JWTパラメーター、`client_authentication_methods.private_key_jwt.credentials`と同じように動作します。詳細については、「[秘密鍵JWTを構成する](/docs/ja-jp/get-started/applications/configure-private-key-jwt)」をお読みください。
    </Callout>

    Management APIから、新しいアプリケーション、または既存のアプリケーションに対してJARを構成することができます。

    #### 新しいアプリケーションに対するJARの構成

    新しいアプリケーションを作成する際、`signed_request_object`としてPOST要求を送って、JARを構成します。そのPOST要求には、該当のクライアント資格情報（キーPEM）を登録することもできます。

    ```json lines theme={null}
    POST https://{yourTenant}.auth0.com/api/v2/clients
    Authorization: Bearer <YOUR_ACCESS_TOKEN>
    Content-Type: application/json
    {
      "name": "My App using JAR",
      "signed_request_object": {
          "required": true,
    "credentials": [{
            "name": "My credential for JAR",
            "credential_type": "public_key",
            "pem": "[YOUR PEM FILE CONTENT]",
            "alg": "RS256"
    }]
      },
      "jwt_configuration": {
        "alg": "RS256"
      }
    }
    ```

    #### 既存のアプリケーションに対するJARの構成

    既存のアプリケーションを更新する際、まずはクライアント資格情報を明確に作成する必要があります。次のPOST要求で、JARに対するクライアント資格情報を作成するためのPEMファイルコンテンツを使用します：

    <AuthCodeBlock children={codeExample1} language="json" />

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      改行は、追加の書式を使わずに適切にJSONエンコードします。
    </Callout>

    次に、`signed_request_object`クライアント構成にクライアント資格情報を割り当てます。次のPATCH要求は、クライアント資格情報を`signed_request_object`と関連付けます：

    <AuthCodeBlock children={codeExample2} language="json" />
  </Tab>
</Tabs>

## もっと詳しく

* [JWT-Secured Authorization Requests（JAR）を使った認可コードフロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow/authorization-code-flow-with-jar)
* [PARとJARを使った認可コードフロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow/authorization-code-flow-with-par-and-jar)
