Je ne sais pas si j'ai juste une sorte d'angle mort ou quoi, mais j'ai lu la spécification OAuth 2 à plusieurs reprises et parcouru les archives de la liste de diffusion, et je n'ai pas encore trouvé une bonne explication de la raison pour laquelle la subvention implicite un flux permettant d'obtenir des jetons d'accès a été développé. Comparé à l'autorisation de code d'autorisation, il semble abandonner l'authentification du client sans raison très convaincante. Comment est-ce "optimisé pour les clients implémentés dans un navigateur utilisant un langage de script" (pour citer la spécification)?
Les deux flux démarrent de la même manière (source: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- Le client lance le flux en dirigeant l'agent utilisateur du propriétaire de la ressource vers le point de terminaison d'autorisation.
- Le serveur d'autorisation authentifie le propriétaire de la ressource (via l'agent utilisateur) et établit si le propriétaire de la ressource accorde ou refuse la demande d'accès du client.
- En supposant que le propriétaire de la ressource accorde l'accès, le serveur d'autorisation redirige l'agent utilisateur vers le client à l'aide de l'URI de redirection fourni précédemment (dans la demande ou lors de l'inscription du client).
- L'URI de redirection inclut un code d'autorisation (Flux de code d'autorisation)
- L'URI de redirection inclut le jeton d'accès dans le fragment URI (flux implicite)
Voici où les flux se divisent. Dans les deux cas, l'URI de redirection à ce stade est vers un point de terminaison hébergé par le client:
- Dans le flux de code d'autorisation, lorsque l'agent utilisateur atteint ce point de terminaison avec le code d'autorisation dans l'URI, le code à ce point de terminaison échange le code d'autorisation avec ses informations d'identification client pour un jeton d'accès qu'il peut ensuite utiliser selon les besoins. Il pourrait, par exemple, l'écrire dans une page Web à laquelle un script de la page pourrait accéder.
- Le flux implicite ignore complètement cette étape d'authentification client et charge simplement une page Web avec le script client. Il y a une astuce mignonne ici avec le fragment d'URL qui empêche le jeton d'accès de trop circuler, mais le résultat final est essentiellement le même: le site hébergé par le client sert une page avec un script qui peut récupérer le jeton d'accès .
D'où ma question: qu'est-ce qui a été gagné ici en sautant l'étape d'authentification du client?