> ## 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.

# Obtener un token

> Autentica a un usuario con sus credenciales mediante la concesión de contraseña del propietario del recurso para aplicaciones de confianza que no pueden usar redirecciones.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Endpoint
</div>

`POST /oauth/token`

<Note>
  Este flujo solo debe usarse desde aplicaciones de alta confianza que **no pueden usar redirecciones**. Si su aplicación puede usar flujos basados en redirección, le recomendamos usar el [flujo de código de autorización](#regular-web-app-login-flow) en su lugar.
</Note>

Este es el tipo de concesión de OAuth 2.0 que usan las aplicaciones de alta confianza para acceder a una API. En este flujo, se solicita al usuario final que introduzca sus credenciales (username/contraseña), normalmente mediante un formulario interactivo en el agente de usuario (navegador). Esta información se envía al backend y, desde allí, a Auth0. Por lo tanto, es imprescindible que la aplicación sea totalmente confiable para gestionar esta información.

<div id="request-headers">
  ### Encabezados de la solicitud
</div>

| Parámetro             | Descripción                                                                                                                                                        |
| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `auth0-forwarded-for` | La IP del usuario final como valor de cadena. Establézcalo si desea que la protección contra ataques de fuerza bruta funcione en escenarios del lado del servidor. |

<div id="responses">
  ### Respuestas
</div>

<div id="200">
  #### 200
</div>

Una solicitud exitosa devuelve el token de acceso.

```json theme={null}
HTTP/1.1 200 OK
Content-Type: application/json
{
  "access_token":"eyJz93a...k4laUWw",
  "token_type":"Bearer",
  "expires_in":86400
}
```

<div id="remarks">
  ### Observaciones
</div>

* Los alcances emitidos a la aplicación pueden diferir de los alcances solicitados. En este caso, se incluirá un parámetro `scope` en el JSON de respuesta.
* Si no se solicitan alcances específicos, se devolverán todos los alcances definidos para la audiencia debido a la confianza implícita otorgada a la aplicación en este flujo.
* Para agregar compatibilidad con `realm`, establezca `grant_type` en `http://auth0.com/oauth/grant-type/password-realm` y `realm` en el realm al que pertenece el usuario. Esto se asigna a una conexión en Auth0.
* Además del nombre de usuario y la contraseña, Auth0 puede requerir que el usuario final proporcione un factor adicional como prueba de identidad. La solicitud puede devolver un error `mfa_required` junto con un `mfa_token` para la autenticación multifactor.

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

* [Llamar a las API desde aplicaciones de alta confianza](https://auth0.com/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow)
* [Ejecutar la concesión de contraseña del propietario del recurso](https://auth0.com/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow/call-your-api-using-resource-owner-password-flow)
* [MFA y la contraseña del propietario del recurso](https://auth0.com/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)

<div id="headers">
  ## Encabezados
</div>

<ParamField header="DPoP" type="string">
  Una prueba DPoP para la solicitud. Es opcional y solo se requiere si tu aplicación usa Demonstrating Proof-of-Possession.
</ParamField>

<div id="body-parameters">
  ## Parámetros del cuerpo
</div>

<ParamField body="grant_type" type="string" required>
  Indica el flujo que está utilizando. Para contraseña del propietario del recurso, use `password`.
</ParamField>

<ParamField body="username" type="string" required>
  Identificador del propietario del recurso, como un username o una dirección de correo electrónico.
</ParamField>

<ParamField body="password" type="string" required>
  Secreto del propietario del recurso.
</ParamField>

<ParamField body="audience" type="string">
  El identificador único de la API de destino a la que desea acceder.
</ParamField>

<ParamField body="resource" type="string">
  El identificador de la API de destino (servidor de recursos) a la que desea acceder. Debe coincidir con un identificador de API registrado en su inquilino de Auth0. Se usa como alternativa a `audience` cuando el [Resource Parameter Compatibility Profile](https://auth0.com/docs/get-started/tenant-settings#settings-advanced) del inquilino está configurado en `compatibility`.
</ParamField>

<ParamField body="scope" type="string">
  Valor de cadena con los distintos alcances que solicita la aplicación.
</ParamField>

<ParamField body="client_id" type="string" required>
  El ID de cliente de su aplicación.
</ParamField>

<ParamField body="client_secret" type="string">
  El secreto del cliente de su aplicación.
</ParamField>

<ParamField body="realm" type="string">
  Valor de cadena del realm al que pertenece el usuario.
</ParamField>

<div id="response-schema">
  ## Esquema de respuesta
</div>

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    El token de acceso.
  </ResponseField>

  <ResponseField name="token_type" type="string">
    El tipo de token. Por lo general, `Bearer`.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    La duración del token de acceso, en segundos.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Mensajes de respuesta
</div>

| Estado | Descripción                  |
| ------ | ---------------------------- |
| 200    | Devuelve el token de acceso. |
