Passer au contenu principal
La prise en charge du mot de passe du a été ajoutée à /oauth/token. L’utilisation du point de terminaison /oauth/ro est devenue obsolète le 8 juillet 2017. Le point de terminaison /oauth/ro était auparavant utilisé pour échanger un mot de passe à usage unique (OTP) reçu par l’utilisateur final par courriel ou par SMS contre un et un . Auth0 a mis en place une nouvelle API qui remplace /oauth/ro pour ce cas d’utilisation, et nous vous recommandons de passer à ce nouveau point de terminaison.

Fonctionnalités concernées

Ce changement vous concerne si vous utilisez l’échange d’identifiants du propriétaire de la ressource et appelez /oauth/ro directement, sans utiliser de bibliothèque ni de SDK Auth0.
Lorsqu’un jeton d’accès basé sur /oauth/ro d’un utilisateur a expiré, Auth0 le force à se réauthentifier (déconnexion forcée requise), car le jeton d’actualisation /oauth/ro ne peut pas être utilisé pour appeler /oauth/token afin d’obtenir un nouveau jeton d’accès. Tous les utilisateurs actuellement connectés doivent se reconnecter lors d’une migration de /oauth/ro vers /oauth/token.

Actions

Modifications de la requête

Auparavant, le payload d’une requête envoyée à /oauth/ro ressemblait à ceci :
{
  "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"
}
Voici les changements de la nouvelle implémentation :
  • L’endpoint pour effectuer des échanges de jetons est maintenant /oauth/token.
  • Le type d’octroi propre à Auth0 est utilisé pour authentifier les utilisateurs provenant d’une connexion (ou d’un realm) donnée.
  • Auth0 prend en charge les scopes OIDC standard, ainsi que les scopes que vous avez définis dans votre API personnalisée.
  • Un scope qui ne correspond à aucune de ces catégories, comme le favorite_color ci-dessus, n’est plus valide.
  • Le paramètre device est supprimé.
  • Le paramètre audience est facultatif.
Voici un exemple du payload d’une requête à /oauth/token :
  • Le type d’octroi est indiqué ici sous la forme http://auth0.com/oauth/grant-type/passwordless/otp.
  • Les paramètres client_id et username demeurent inchangés.
  • Le client_secret doit être indiqué pour les (p. ex. les applications Web classiques).
  • Le mot de passe à usage unique doit être envoyé dans le paramètre otp plutôt que dans le paramètre password.
  • Le realm sert à identifier la connexion et remplace le paramètre connection des appels précédents.
  • Le paramètre scope est essentiellement le même, mais il n’accepte pas de valeurs non OIDC.
  • Le paramètre audience peut être ajouté pour indiquer l’ de l’API à laquelle le jeton est destiné.

Changements apportés aux réponses

Les réponses de /oauth/ro ressemblaient au format suivant :
{
  "access_token": "SlAV32hkKG",
  "token_type": "Bearer",
  "refresh_token": "8xLOxBtZp8",
  "expires_in": 3600,
  "id_token": "eyJ..."
}
  • Le jeton d’accès renvoyé est valide pour appeler l’endpoint /userinfo (à condition que l’API spécifiée par le paramètre audience utilise RS256 comme ) et, s’il y a lieu, l’API personnalisée si elle a été spécifiée.
  • Le jeton d’identité sera obligatoirement signé avec RS256 s’il est demandé par une .
  • Un sera renvoyé uniquement si le scope offline_access a été accordé et que l’option Allow offline access est activée pour l’API.
Voici un exemple de réponse conforme à OIDC de /oauth/token :
{
  "access_token": "eyJ...",
  "token_type": "Bearer",
  "refresh_token": "8xLOxBtZp8",
  "expires_in": 3600,
  "id_token": "eyJ..."
}

Modifications du code lors de l’utilisation des SDK

Si votre application utilise les bibliothèques natives Auth0 pour Android ou iOS, assurez-vous que la version de la bibliothèque incluse est au moins égale à la version minimale indiquée ci-dessous (ou supérieure). Assurez-vous également de définir l’indicateur OIDC Conformant à true lors de la configuration de ces bibliothèques.
BibliothèqueVersion minimale
SDK Android1.2
Lock Android2.17
SDK Swift1.20.0
Lock iOS2.14.0

Vérifier la migration

  1. Pour vérifier si vous utilisez le point de terminaison obsolète, consultez les journaux du locataire, filtrez par Deprecation Notice, puis recherchez des entrées indiquant oauth/ro passwordless: This feature is being deprecated. Vous pouvez aussi lancer directement cette recherche avec la requête suivante : type:depnote AND description:*passwordless*.
  2. Une fois votre base de code migrée et après avoir confirmé que vos applications n’appellent plus ce point de terminaison, allez dans l’Auth0 Dashboard, sous Paramètres du locataire > Avancé.
  3. Faites défiler jusqu’à Migrations et désactivez ancien /oauth/ro point de terminaison. La désactivation de ce commutateur rend le point de terminaison obsolète inutilisable pour votre locataire.
Si la désactivation de ce commutateur entraîne des échecs de connexion, c’est le signe que vous n’avez pas encore complètement retiré toutes les occurrences d’ancien code de vos applications. Une fois les migrations effectuées avec succès dans les environnements de production, vous pouvez désactiver ce commutateur et le laisser désactivé afin de garantir que les fonctionnalités obsolètes ne puissent plus être utilisées.

En savoir plus