Flux de mot de passe du propriétaire de ressource avec OIDC

Le Flux de mot de passe du propriétaire de ressource (parfois appelé consentement de mot de passe du propriétaire de la ressource ou ROPG) est utilisé par des applications hautement fiables pour fournir une authentification active. Contrairement au code d’autorisation et aux consentements implicites, ce mécanisme d’authentification ne redirige pas les utilisateurs vers Auth0. Il authentifie les utilisateurs avec une seule demande, en échangeant leurs informations d’identification de mot de passe contre un jeton.

Le pipeline conforme à l’OIDC affecte le flux de mot de passe du propriétaire de ressource dans les domaines suivants :

  • Demande d’authentification

  • Réponse d’authentification

  • Structure des jetons d’ID

  • Structure des jetons d’accès

Demande d’authentification

Hérité

POST /oauth/ro HTTP 1.1
Content-Type: application/json
{
  "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"
}

Was this helpful?

/

Le paramètre device n’est nécessaire que si vous demandez un jeton d’actualisation en transmettant la permission offline_access.

Conformité OIDC

POST /oauth/token HTTP 1.1
Content-Type: application/x-www-form-urlencoded
grant_type=http%3A%2F%2Fauth0.com%2Foauth%2Fgrant-type%2Fpassword-realm&client_id=123&username=alice&password=A3ddj3w&realm=my-database-connection&scope=openid+email+offline_access&audience=https%3A%2F%2Fapi.example.com

Was this helpful?

/

  • Le point de terminaison pour exécuter les échanges d’informations d’identification est /oauth/token.

  • Le type de consentement propre à Auth0 est utilisé pour authentifier les utilisateurs à partir d’une connexion spécifique (realm). Le consentement de mot de passe OIDC standard est également pris en charge, mais il n’accepte pas les paramètres spécifiques à Auth0 tels que realm.

  • favorite_color n’est plus une permission valide.

  • Le paramètre device est retiré.

  • Le paramètre audience est facultatif.

Réponse d’authentification

Hérité

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
    "access_token": "SlAV32hkKG",
    "token_type": "Bearer",
    "refresh_token": "8xLOxBtZp8",
    "expires_in": 3600,
    "id_token": "eyJ..."
}

Was this helpful?

/

  • Le jeton d’accès renvoyé n’est valide que pour appeler le point de terminaison /userinfo.

  • Un jeton d’actualisation sera renvoyé uniquement si un paramètre device a été transmis et que la permission offline_access a été demandée.

Conformité OIDC

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
    "access_token": "eyJ...",
    "token_type": "Bearer",
    "refresh_token": "8xLOxBtZp8",
    "expires_in": 3600,
    "id_token": "eyJ..."
}

Was this helpful?

/

  • Le jeton d’accès renvoyé est valide pour appeler le point de terminaison /userinfo (à condition que l’API spécifiée par le paramètre audience utilise RS256 en tant qu’algorithme de signature) et éventuellement le serveur de ressources spécifié par le paramètre audience.

  • Le jeton d’ID sera signé de force à l’aide de RS256 si une application publique le demande. Pour en savoir plus, lisez Applications confidentielles et publiques.

  • Un jeton d’actualisation sera renvoyé uniquement si la permission offline_access a été accordée.

Structure de jeton d’ID

Hérité

{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": "123",
    "exp": 1482809609,
    "iat": 1482773609,
    "email": "alice@example.com",
    "email_verified": true,
    "favorite_color": "blue"
}

Was this helpful?

/

Conformité OIDC

{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": "123",
    "exp": 1482809609,
    "iat": 1482773609,
    "email": "alice@example.com",
    "email_verified": true,
    "https://app.example.com/favorite_color": "blue"
}

Was this helpful?

/

  • Le jeton d’ID sera signé de force à l’aide de RS256 si une application publique le demande.

  • La demande favorite_color doit être spécifiée dans un espace de noms et ajoutée par le biais d’une règle. Pour en savoir plus, veuillez consulter Créer des demandes personnalisées avec espace de noms.

Structure des jetons d’accès (facultatif)

Hérité

SlAV32hkKG

Was this helpful?

/

Le jeton d’accès renvoyé est opaque et n’est valide que pour appeler le point de terminaison /userinfo.

Conformité OIDC

{
    "sub": "auth0|alice",
    "iss": "https://{yourDomain}/",
    "aud": [
        "https://api.example.com",
        "https://{yourDomain}/userinfo"
    ],
    "azp": "123",
    "exp": 1482816809,
    "iat": 1482809609,
    "scope": "openid email"
}

Was this helpful?

/

  • Le jeton d’accès renvoyé est un JWT valide pour appeler le point de terminaison /userinfo (à condition que l’API spécifiée par le paramètre audience utilise RS256 en tant qu’algorithme de signature) et éventuellement le serveur de ressources spécifié par le paramètre audience.

  • Notez qu’un jeton d’accès opaque peut toujours être renvoyé si /userinfo est la seule audience spécifiée.

Demandes d’attribution de mot de passe standard

Le consentement de domaine de mot de passe Auth0 n’est pas défini en standard par OIDC, mais il est suggéré comme alternative au point de terminaison du propriétaire de la ressource héritée, car il prend en charge le paramètre realm spécifique à Auth0. Le flux OIDC standard est également pris en charge lors de l’utilisation de l’authentification OIDC.

En savoir plus