2016-07-17 1 views
0

J'essaie d'utiliser l'IdentityServer3 pour l'autorisation dans une application Web .NET. J'essaie de comprendre pourquoi le flux implicite exige que IdentityServer ait un certificat de signature alors que les flux d'autorisation ne l'exigent pas. Jusqu'à présent, voici ce que je comprends: les flux "ClientCredential" et "ResourceOwner" sont "AuthorizationFlows" - c'est-à-dire qu'ils ont un secret client, tous les jetons sont renvoyés du point de terminaison token, authentification de longue durée via des jetons d'actualisation est possible, les jetons ne sont pas révélés à l'agent/navigateur utilisateur (ils sont plutôt stockés sur le serveur et un cookie ou similaire est envoyé à l'agent utilisateur/au navigateur) par https://www.scottbrady91.com/OpenID-Connect/OpenID-Connect-Flows. Pour une application SPA/JS qui accède directement à un WebAPI, le flux implicite doit être utilisé parce que le client JS appelle Identity Server directement à partir du navigateur, donc il n'y a aucun moyen de préserver un secret client (puisqu'il doit être transmis au navigateur, compromettant ainsi la sécurité). Tout cela est logique, mais dans tous les cas, IdentityServer génère des jetons que l'application utilise pour l'autorisation, donc je suis perplexe pourquoi ils doivent être signés dans un cas mais pas dans l'autre?Pourquoi un certificat de signature est-il requis pour le flux implicite dans IdentityServer3, mais pas pour les flux ClientCredential et ResourceOwner?

Un grand merci pour votre aide!

Répondre

0

Un certificat de signature est nécessaire chaque fois qu'un JWT est émis (id_token ou access_token).

+0

Merci beaucoup! Je suis encore un peu confus car je crois comprendre que les trois flux permettent à l'appelant d'obtenir un jeton d'accès ... Est-ce un JWT pour le flux implicite, et un autre type de jeton pour les flux ClientCredentials et ResourceOwner? Si oui, pourquoi les différents types de jetons pour les différents flux? – user756366