2016-06-14 4 views
0

Il existe un sample implementation du serveur d'autorisation OAuth 2.0 et un exemple de flux de travail pour chaque type de subvention. L'IETF a une spécification OAuth 2.0 pour Code Grant Flow. Lorsque vous regardez les étapes "D" & "E" dans le tableau du flux d'attribution de code IETF, elles ne semblent pas être implémentées dans l'exemple de mise en œuvre (premier lien).OAuth 2.0 Code Flux de remise

Où sont les étapes D & E dans l'exemple de mise en œuvre? Je sais que c'est un exemple d'implémentation qui n'est pas prêt pour la production, mais j'ai supposé qu'il suivrait les spécifications pour OAuth 2.0.

Dans l'exemple d'application, le client obtient le code, mais ne le transfère pas au serveur OAuth pour obtenir les jetons. En fait, il obtient les jetons y compris le code déjà à l'étape 3.

enter image description here

Répondre

0

Ok, je l'ai téléchargé les sources Microsoft.Owin et débogués par le code.

Les bibliothèques client DotnetOAuth envoient une requête de jeton sous le capot. Je ne pouvais pas le voir en utilisant Fiddler, car il utilise un objet WebRequest et n'est donc pas capturé par Fidddler ootb!

La demande de jeton contient le jeton de code et il devient également validé

Il sera validé dans le

ReceiveAuthenticationToken eventhandler.

Le jeton de code est créé ici:

private void CreateAuthenticationToken(AuthenticationTokenCreateContext ctx) 
{ 
    var code = Guid.NewGuid().ToString("n") + Guid.NewGuid().ToString("n"); 
    ctx.SetToken(code); 
    _authenticationCodes[ctx.Token] = ctx.SerializeTicket(); <-- stored in a concurrentDictionary as the key for the auth ticket, for demonstration purposes only 
// delete the entry, must only be used once 
}