2017-04-30 4 views
0

handeln Ich lerne derzeit einen OAuth2-Server von .Net und scheint wie OWIN eine nette Workaround zur Verfügung gestellt, um leicht erreichen diese Art von Server.Kann nicht handeln Token von Autorisierungscode

Ich habe das Microsoft Beispiel versucht: https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

Scheint, wie die Probe funktioniert gut, aber es versäumt, wenn ich den Autorisierungscode für ein Zugriffstoken über PostMan zu handeln versuchte.

verwendete ich POST-Methode mit Kopf Content-Type=application/x-www-form-urlencoded und die folgenden params in der Anfrage Körper:

grant_type=authorization_code 
client_id=7890ab 
redirect_uri=http%3A%2F%2Flocalhost%3A50150%2Fcallback%2F 
code=d7a91a351ffa4764a22ef3628c94d495443e0043bfc9405b9f1c5113a234a23d 
client_secret=7890ab 

ich den Debugger verfolgen durch und fand den Prozess übergeben Ereignis ReceiveAuthenticationCode und das Ticket/deserialisiert abgerechnet werden sollte.

Wie auch immer ich es versuchte, die Ergebnisse waren immer invalid_grant.


Ich habe in der ursprünglichen Probe sah, das ich es Erfolg gefunden mit WebServerClient das Zugriffstoken zu gewinnen. Aber da mein Zweck darin besteht, Dienste bereitzustellen, die nicht auf .Net-Clients beschränkt sind, muss ich sicherstellen, dass ich das Token ohne Bibliothek abrufen kann.

Hat jemand einen Vorschlag?


Update 1

ich die clientID & clientSecret zu 7890ab:7890ab angeschlossen haben und codiert die Zeichenfolge 64 Zeichenfolge zu stützen Nzg5MGFiOjc4OTBhYg== dann anhängen Authorization=Basic Nzg5MGFiOjc4OTBhYg== auf Header, die sich nichts geändert

Antwort

0

Nach 2 Wochen versuchen, Ich habe festgestellt, dass ich mich im grundlegenden Teil geirrt habe, ich hoffe, dass ich die Zeit meines folgenden Programmierers sparen kann, der auf dieses Problem trifft;

Wenn für die Authorization Code durch HTTP GET Verfahren geht, sollte der Wert von redirect_uri (zB http%3A%2F%2Flocalhost%3A50150%2Fcallback%2F)

jedoch codiert werden, nachdem der Code-Verstärkung ist und für die Access Token von HTTP POST Methode für den Handel geht, wird der Wert von redirect_uri innerhalb der Anfrage Körper sollte nicht codiert werden, sollte der Wert http://localhost:50150/callback/ sein und dies ist der Teil verursacht Invalid_grand Rückkehr.

Anmerkungen: Der Wert der redirect_uri sollte zwischen den Anfragen gleich sein, dass, wenn die uri Mittel mit http:// oder endet mit einem / führt, wenn für die Authorization Code fragen, sollten diese Teile auch dann vor, wenn für die Access Token fragen

Referenz: die folgende Demo ist viel klarer als MSDN meiner Meinung nach https://github.com/yuezhongxin/OAuth2.Demo

Verwandte Themen