web-dev-qa-db-fra.com

Différence entre OAuth 2.0 "état" et OpenID "nonce" paramètre? Pourquoi état ne pouvait pas être réutilisé?

OAuth 2.0 définit le paramètre "state" à envoyer à la demande du client pour empêcher les attaques de requêtes intersites. Same est mentionné dans la spécification OpenID pour "nonce". Outre le fait que "nonce" est renvoyé dans un jeton ID au lieu de paramètres de requête, ils semblent avoir exactement le même objectif. Si quelqu'un peut expliquer pourquoi ils sont séparés

37
dvsakgec

Etat et nonce semblent être similaires. Mais si vous creusez profondément, vous constaterez qu'ils servent des objectifs différents.

State est là pour protéger l'utilisateur final contre les attaques de type CSRF (Cross Site Request). Il est introduit depuis OAuth 2.0 protocole RFC6749 . Le protocole indique que,

Une fois l'autorisation de l'utilisateur final obtenue, le serveur d'autorisation redirige l'agent utilisateur de l'utilisateur final vers le client avec la valeur de liaison requise contenue dans "l'état" paramètre. La valeur de liaison permet au client de vérifier la validité de la demande en faisant correspondre la valeur de liaison à l'état authentifié de l'agent d'utilisateur.

Et ceci est utilisé dans la demande d'autorisation. Il permet au client de vérifier que la réponse d’autorisation n’a pas été modifiée ni envoyée par le serveur d’origine authentifié. demande a été envoyée. En bref, cela permet au client de vérifier par recoupement la demande d'autorisation et la réponse.

Le nonce sert un objectif différent. Il lie les jetons avec le client. Il sert de paramètre de validation de jeton et est introduit à partir de spécification OpenID Connect .

nonce - Valeur de chaîne utilisée pour associer une session client à un jeton d'ID et pour atténuer les attaques par relecture. La valeur est transmise non modifiée de la demande d’authentification au jeton d’ID. S'ils sont présents dans le jeton ID, les clients DOIVENT vérifier que la valeur de revendication nonce est égale à la valeur du paramètre nonce envoyé dans la demande d'authentification. S'ils sont présents dans la demande d'authentification, les serveurs d'autorisation DOIVENT inclure une revendication nonce dans le jeton ID, la valeur de revendication étant la valeur de nonce envoyée dans la demande d'authentification. Les serveurs d'autorisation NE DEVRAIENT effectuer aucun autre traitement sur les valeurs nonce utilisées. La valeur nonce est une chaîne sensible à la casse

Comme vous pouvez le constater, la valeur nonce provient de la demande d'autorisation et est générée par le client. Et si nonce est inclus, il sera présent dans le jeton. Ainsi, le client peut valider le jeton qu'il a reçu par rapport à la demande d'autorisation initiale, assurant ainsi la validité du jeton.

En outre, en fonction du type de flux, nonce peut être un paramètre obligatoire. Le flux implicite et le flux hybride mandat nonce valeur. Les deux valeurs sont générées et validées par l'application cliente.

Pourquoi cet état n'a pas pu être réutilisé?

Si une demande d'autorisation est capturée, la partie malveillante peut simuler la réponse d'autorisation. Cela peut être évité en modifiant le paramètre d'état.

41
Kavindu Dodanduwa