Utilisation des API sans mot de passe

Les API sans mot de passe peuvent être utilisées dans deux scénarios :

  • Lors de l’implémentation de la connexion universelle et que vous souhaitez personnaliser la page de connexion à l’aide d’auth0.js pour interagir avec Auth0.

  • Lorsque vous souhaitez intégrer le flux de connexion dans votre application.

Si vous décidez d’intégrer la connexion, assurez-vous que vous comprenez les implications en matière de sécurité.

Pour en savoir plus sur la façon d’implémenter la connexion sans mot de passe pour connexion universelle et la connexion intégrée pour différents scénarios, veuillez consulter Authentification sans mot de passe avec la connexion universelle ou Authentification sans mot de passe avec la connexion intégrée.

Points de terminaison sans mot de passe

POST /passwordless/start

Le point de terminaison POST /passwordless/start peut être appelé pour démarrer le processus d’authentification sans mot de passe pour la connexion classique et la connexion intégrée.

En fonction des paramètres fournis au point de terminaison, Auth0 démarre le processus de vérification de l’utilisateur en envoyant l’un des éléments suivants :

  • Un code à usage unique par courriel ou SMS

  • Un lien à usage unique par courriel

L’appel de l’API doit avoir la structure suivante :

POST https://{yourDomain}/passwordless/start
Content-Type: application/json
{
  "client_id": "{yourClientID}",
  "client_secret": "{yourClientSecret}", // For Regular Web Applications
  "connection": "email|sms",
  "email": "{email}", //set for connection=email
  "phone_number": "{phoneNumber}", //set for connection=sms
  "send": "link|code", //if left null defaults to link
  "authParams": { // any authentication parameters that you would like to add
    "scope": "openid",     // used when asking for a magic link
    "state": "{yourState}"  // used when asking for a magic link, or from the custom login page
  }
}

Was this helpful?

/

Si vous utilisez un lien magique, les utilisateurs recevront un lien généré par la Authentication API. Les utilisateurs sélectionneront le lien et déclencheront un appel à {yourLocataireAuth0}.auth0.com/passwordless/verify-redirect. Auth0 redirigera l’utilisateur vers l’application et l’utilisateur sera connecté.

Si vous utilisez un code, votre application devra vous demander ce code, puis vous devrez utiliser le point de terminaison /oauth/token, ou la méthode passwordlessLogin dans la trousse SDK Auth0.js pour échanger ce code contre des jetons d’authentification.

POST /oauth/token

Si vous implémentez une connexion sans mot de passe pour des applications natives ou des applications Web classiques, vous devez utiliser le point de terminaison /oauth/token pour échanger le code OTP contre des jetons d’authentification. Vous ne pouvez pas utiliser ce point de terminaison à partir d’applications à page unique.

Pour y parvenir, vous devez d’abord activer l’autorisation Passwordless OTP (OTP Sans mot de passe) dans Auth0 Dashboard > Applications > Applications dans les réglages de votre application, sous Advanced Settings (Réglages avancés) > Grant Types (Types d’autorisations).

L’utilisateur recevra le code OTP et votre application native ou Web le lui demandera. Lorsque l’utilisateur saisit le code, vous pouvez terminer le flux d’authentification en appelant le point de terminaison /oauth/token avec les paramètres suivants :

POST https://{yourAuth0Domain}/oauth/token
Content-Type: application/json
{
  "grant_type" : "http://auth0.com/oauth/grant-type/passwordless/otp",
  "client_id": "{yourAuth0ClientID}",
  "client_secret": "{yourClientSecret}", // only for web apps, native apps don’t have a client secret
  "username":"<email address>", // or "<phone number>"
  "otp": "CODE",
  "realm": "email", // or "sms" 
  "audience" : "your-api-audience", // in case you need an access token for a specific API
  "scope": "openid profile email" // whatever scopes you need
}

Was this helpful?

/

Si tout se passe bien, Auth0 renverra une réponse similaire à la suivante :

HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"eyJz93a...k4laUWw",
"refresh_token":"GEbRxBN...edjnXbL",
"id_token":"eyJ0XAi...4faeEoQ",
"token_type":"Bearer",
"expires_in":86400
}

Was this helpful?

/

Vous pouvez ensuite décoder le jeton d’ID pour obtenir des informations sur l’utilisateur ou utiliser le jeton d’accès pour appeler votre API comme d’habitude.

Utiliser Auth0.js

Lors de la mise en œuvre de l’authentification sans mot de passe dans des applications à page unique ou dans une page de connexion universelle personnalisée, vous devez utiliser Auth0.js et la méthode passwordlessLogin incluse. L’implémentation est complexe, nous vous recommandons donc d’utiliser la bibliothèque plutôt que d’appeler directement les API.

Limitation anti-attaques dans les points de terminaison sans mot de passe

Les limites d’utilisation et les fonctionnalités de protection Auth0 contre les attaques ne prennent en compte que l’adresse IP de la machine qui effectue l’appel API. Lorsque l’appel API est effectué à partir d’un serveur dorsal, vous souhaitez généralement qu’Auth0 prenne en compte l’adresse IP de l’utilisateur final, et non celle du serveur.

Auth0 prend en charge la spécification d’un en-tête auth0-forwarded-for dans les appels d’API, mais il n’est pris en compte que lorsque :

  • l’appel API est effectué pour une application confidentielle.

  • l’appel API inclut le secret client.

  • la bascule Faire confiance à l'IP indiqué dans l'entête du point de terminaison du jeton est activée.

Pour une explication complète, veuillez consulter Évitez les problèmes courants liés au flux de mot de passe du propriétaire de ressource et à la protection contre les attaques.