Saltar al contenido principal
Se añadió compatibilidad con la contraseña del en /oauth/token. El uso del endpoint /oauth/ro quedó obsoleto el 08 de julio de 2017. Anteriormente, el endpoint /oauth/ro se usaba para intercambiar un código de un solo uso (OTP) recibido por el usuario final por correo electrónico o SMS por un y un . Auth0 ha implementado una nueva API que reemplaza /oauth/ro para este caso de uso, y le recomendamos migrar al nuevo endpoint.

Características afectadas

Este cambio le afecta si usa el intercambio de credenciales del propietario del recurso y llama a /oauth/ro directamente sin usar ninguna biblioteca ni SDK de Auth0.
Cuando el token de acceso basado en /oauth/ro de un usuario expira, Auth0 obliga al usuario a autenticarse de nuevo (es necesario forzar el cierre de sesión), ya que el token de actualización de /oauth/ro no se puede usar para llamar a /oauth/token y obtener un nuevo token de acceso. Todos los usuarios que tengan una sesión iniciada actualmente deberán volver a iniciar sesión durante una migración de /oauth/ro a /oauth/token.

Actions

Cambios en la solicitud

Anteriormente, la carga útil de una solicitud a /oauth/ro era similar a la siguiente:
{
  "grant_type": "password",
  "client_id": "123",
  "username": "alice",
  "password": "A3ddj3w", 
  "connection": "my-database-connection",
  "scope": "openid email favorite_color offline_access",
  "device": "my-device-name"
}
Estos son los cambios de la nueva implementación:
  • El endpoint para ejecutar el intercambio de tokens ahora es /oauth/token.
  • El tipo de concesión propio de Auth0 se usa para autenticar a usuarios desde una conexión (o realm) específica.
  • Auth0 admite los alcances estándar de OIDC, junto con los alcances que haya definido en su API personalizada.
  • Un scope que no encaja en una de estas categorías, como el favorite_color anterior, ya no es válido.
  • Se elimina el parámetro device.
  • El parámetro audience es opcional.
Este es un ejemplo de la carga útil de una solicitud a /oauth/token:
  • El tipo de concesión se especifica aquí como http://auth0.com/oauth/grant-type/passwordless/otp.
  • Los parámetros client_id y username no cambian.
  • Es necesario especificar client_secret para (por ejemplo, aplicaciones web tradicionales).
  • El código de un solo uso debe enviarse en el parámetro otp en lugar del parámetro password.
  • realm se usa para identificar la conexión y sustituye al parámetro connection de llamadas anteriores.
  • El parámetro scope es en gran medida el mismo, pero no acepta valores que no sean de OIDC.
  • Se puede agregar el parámetro audience, que indica la de la API a la que se destinará el token.

Cambios en las respuestas

Las respuestas de /oauth/ro tenían un formato similar a este:
{
  "access_token": "SlAV32hkKG",
  "token_type": "Bearer",
  "refresh_token": "8xLOxBtZp8",
  "expires_in": 3600,
  "id_token": "eyJ..."
}
  • El token de acceso devuelto es válido para llamar al endpoint /userinfo (siempre que la API especificada por el parámetro audience use RS256 como ) y, opcionalmente, a la API personalizada, si se especificó una.
  • El ID Token se firmará obligatoriamente con RS256 si lo solicita un .
  • Se devolverá un solo si se concedió el scope offline_access y la API tiene activada la opción Permitir acceso sin conexión.
Este es un ejemplo de la respuesta conforme a OIDC de /oauth/token:
{
  "access_token": "eyJ...",
  "token_type": "Bearer",
  "refresh_token": "8xLOxBtZp8",
  "expires_in": 3600,
  "id_token": "eyJ..."
}

Cambios en el código al usar los SDKs

Si tu aplicación usa las bibliotecas nativas de Auth0 para Android o iOS, asegúrate de que la versión de la biblioteca que incluyes sea, como mínimo, la que se indica a continuación (o una superior). Además, asegúrate de establecer el indicador OIDC Conformant en true al configurar las bibliotecas.
BibliotecaVersión mínima
SDK de Android1.2
Lock Android2.17
SDK de Swift1.20.0
Lock iOS2.14.0

Verificar la migración

  1. Para verificar si está usando el endpoint obsoleto, consulte los registros del inquilino, filtre por Deprecation Notice y luego busque registros que indiquen oauth/ro passwordless: This feature is being deprecated. También puede realizar esta búsqueda directamente con la siguiente consulta: type:depnote AND description:*passwordless*.
  2. Una vez que haya migrado su base de código y esté seguro de que sus aplicaciones no están haciendo llamadas al endpoint, vaya al Dashboard, en Tenant Settings > Advanced.
  3. Desplácese hacia abajo hasta Migrations y desactive Legacy /oauth/ro Endpoint. Al desactivar este interruptor, se inhabilita el endpoint obsoleto para su inquilino, lo que evita que siga usándose.
Si al desactivar este interruptor se producen errores de inicio de sesión, es señal de que aún no ha eliminado por completo todas las instancias de código legado de sus aplicaciones. Una vez que las migraciones se hayan realizado correctamente en los entornos de producción, el interruptor puede desactivarse y dejarse así para garantizar que las funciones obsoletas ya no puedan usarse.

Más información