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

> Aprenda a configurar solicitudes de autorización protegidas con JWT (JAR) para una aplicación.

# Configurar solicitudes de autorización protegidas con JWT (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) + "*****ENMASCARADO*****";
          }
          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": "Mis credenciales de 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">
  Para usar las funciones de Highly Regulated Identity, debe tener un plan Enterprise con el complemento Highly Regulated Identity. Consulte [Auth0 Pricing](https://auth0.com/pricing/) para obtener más información.
</Callout>

<Tooltip tip="JSON Web Token (JWT): formato estándar de ID Token (y, a menudo, de token de acceso) utilizado para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWT">JWT</Tooltip>-Las solicitudes de autorización protegidas con JWT (JAR) permiten empaquetar los parámetros de la solicitud de autorización de OAuth2 en un único parámetro de solicitud JWT, que luego se firma para proteger su integridad.

<div id="prerequisites">
  ## Requisitos previos
</div>

Antes de configurar su aplicación para utilizar JAR, debe [generar un par de claves RSA](/es/docs/secure/application-credentials/generate-rsa-key-pair).

<Warning>
  Debe generar un par de claves distinto para cada uso de credenciales. Por ejemplo, no reutilice el mismo par de claves para JAR y la autenticación con Private Key JWT.
</Warning>

<div id="configure-jar-for-an-application">
  ## Configurar JAR para una aplicación
</div>

Puede configurar JAR para una aplicación desde <Tooltip tip="Auth0 Dashboard: el producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> y la <Tooltip tip="Auth0 Dashboard: el producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip>.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Usa Auth0 Dashboard para configurar tu aplicación y que use JAR con claves RSA generadas previamente.

    1. Ve a [Auth0 Dashboard > Applications](https://manage.auth0.com/#/applications).
    2. Selecciona la aplicación que quieres usar con JAR.
    3. Selecciona la pestaña **Configuración de la aplicación**.
    4. En la sección **Authorization Requests**, habilita **Require solicitudes de autorización protegidas con JWT**.
    5. Si no hay ninguna credencial asignada y hay credenciales disponibles, se te pedirá que asignes una credencial existente.

           <Frame>
             <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=563a22423de44f705848d08249cd327c" alt="Dashboard > Application > Settings > Assign Existing Credentials" data-og-width="792" width="792" data-og-height="688" height="688" data-path="docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?w=280&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=43bd8a48e25024ebc4e120dc583617bf 280w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?w=560&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=80d27bf6d7bded96c2ca9b145ea3d039 560w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?w=840&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=02bb47a10e6f61d023daf18f249985d0 840w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?w=1100&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=caf70b98741e84fc03b0b97da058ce7b 1100w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?w=1650&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=c924bf2bb2cadfbeb6d9ed56c855b9f3 1650w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/HQHhFWTtdfNa5TnZ1dwx6/e47068cc9e85c538f80476162f4314a3/Existing_Creds_-_English.png?w=2500&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=2be02e7ff6ac45e2f50c3bb0aa976fe8 2500w" />
           </Frame>
    6. También tendrás la opción de asignar una credencial nueva.

           <Frame>
             <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=aefb9bfd7421e2509f95f3bd8a334078" alt="Auth0 Dashboard > Applications > Settings > Assign New Credentials" data-og-width="702" width="702" data-og-height="366" height="366" data-path="docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?w=280&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=840b171f616c5ffa3e6a5516c4a8b582 280w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?w=560&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=f399f3a4a327b5e268ae8dc0665ac273 560w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?w=840&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=77c086b91ce428508aebd23d042e8d9a 840w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?w=1100&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=aca496b345ddb1e254cb2621bf520627 1100w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?w=1650&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=0a2ac8150e19326e2789fbde8ae1b075 1650w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7JfsCBwytWO6Q7hUvdtSwJ/b85fd39fea7330a31496f51347767ae7/New_Creds_-_EN.png?w=2500&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=20347b474ba2c2db11fbf53fb5115937 2500w" />
           </Frame>
    7. Agrega y asigna una credencial nueva cargando un par de claves RSA generado previamente. Cuando se te solicite, introduce lo siguiente:

       * **Nombre**: un nombre para identificar la credencial
       * **Clave pública**: la clave pública del certificado X.509 en formato PEM
       * **Algoritmo**: selecciona el algoritmo de firma de JAR
       * **Fecha de expiración**: establece la fecha de expiración de la credencial
  </Tab>

  <Tab title="Management API">
    Usa la [Management API](https://auth0.com/docs/api/management/v2) para configurar JAR en tu aplicación mediante la propiedad de configuración del cliente `signed_request_object`. Esta propiedad de objeto contiene los siguientes campos:

    * `required`: obliga a que todas las solicitudes de autorización a `/authorize` y `/oauth/par` usen JAR. Para obtener más información, consulta [Flujo de código de autorización con solicitudes de autorización protegidas con JWT](/es/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/authorization-code-flow-with-jar).
    * `credentials`: una matriz de ID de credenciales que se usan para verificar firmas.

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      El parámetro credentials se comporta de forma similar al parámetro de Private Key JWT `client_authentication_methods.private_key_jwt.credentials`, que admite la creación de credenciales al crear una aplicación nueva. Para obtener más información, consulta [Configurar Private Key JWT](/es/docs/get-started/applications/configure-private-key-jwt).
    </Callout>

    Puedes configurar JAR para una aplicación nueva o una aplicación existente mediante la Management API.

    #### Configurar JAR para una aplicación nueva

    Cuando crees una aplicación nueva, configura JAR enviando una solicitud POST con `signed_request_object`. En esa solicitud POST, también puedes registrar la credencial de cliente correspondiente (es decir, la clave 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"
      }
    }
    ```

    #### Configurar JAR para una aplicación existente

    Al actualizar una aplicación existente, primero debes crear explícitamente una credencial de cliente. La siguiente solicitud POST usa el contenido de tu archivo PEM para crear tus credenciales de cliente para JAR:

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

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Asegúrate de que los saltos de línea estén codificados correctamente en JSON, sin formato adicional.
    </Callout>

    Luego, asigna la credencial de cliente a la configuración de cliente `signed_request_object`. La siguiente solicitud PATCH asocia tus credenciales de cliente con `signed_request_object`:

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

<div id="learn-more">
  ## Más información
</div>

* [Flujo de código de autorización con solicitudes de autorización protegidas mediante JWT (JAR)](/es/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/authorization-code-flow-with-jar)
