Authorization_code gewähren flow auf Owin.Sicherheit.OAuth: gibt invalid_grant

Ich versuche, meine setup-Authentifizierung verwenden der authorization_code Zuschuss fließen. Ich hatte es zuvor mit grant_type=password, so dass ich Art von wissen, wie das Zeug funktionieren soll. Aber wenn grant_type=authorization_code, konnte ich nicht zurückkehren, alles andere als invalid_grant

Hier ist mein setup:

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
    AllowInsecureHttp = true,
    TokenEndpointPath = new PathString("/auth/token"),
    AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5),
    Provider = new SampleAuthProvider()
});

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
    AuthenticationType = "Bearer"
});

SampleAuthProvider ist die folgende Klasse: https://gist.github.com/anonymous/8a0079b705423b406c00

Im Grunde, es ist nur die Protokollierung, die jeden Schritt und es überprüft. Ich habe versucht, die Anfrage:

POST http://localhost:12345/auth/token
grant_type=authorization_code&code=xxxxxx&client_id=xxxxx&redirect_uri=https://xxxx.com/
Content-Type: application/x-www-form-urlencoded

Es geht durch:

  • OnMatchEndpoint
  • OnValidateClientAuthentication

Und das ist alles. Ich erwartete, es zu nennen OnValidateTokenRequest und OnGrantAuthorizationCodenächsten, aber es hat einfach nicht. Ich habe keine Ahnung, warum.

Den xxxx's in der Anforderung sind nicht Platzhalter, ich habe versucht es so. Vielleicht ist die middleware macht ein paar Prüfungen, auf seine eigene, und lehnt den Antrag wegen? Ich versuchte Variante (N) der redirect_uri mit http, ohne Protokoll, ohne trailing slash...

Funktioniert es auch richtig mit einer benutzerdefinierten grant_type. Es so, wenn ich zu verzweifelt, ich denke, dass ich verwenden können, um zu simulieren authorization_code, aber ich würde es lieber nicht zu tun.

TL;DR

Meine OAuthAuthorizationServerProvider zurück {"error":"invalid_grant"}nach OnValidateClientAuthentication bei der Verwendung grant_type=authorization_code.

  • Warum ist es hier anzuhalten?
  • Wie kann ich das ganze verdammte Ding funktioniert?

Vielen Dank für Ihre Hilfe!


Bearbeiten

Wie bereits von RajeshKannan, ich habe einen Fehler in meiner Konfiguration. Ich habe nicht eine AuthorizationCodeProvider Instanz. Jedoch, die nicht vollständig das problem lösen, da in meinem Fall der code wird nicht ausgegeben, indem die AuthorizationCodeProvider, und ich kann nicht einfach Deserialisieren. Ich behandelt mit dem workaround hab ich arbeiten.

InformationsquelleAutor dgn | 2014-07-01

Schreibe einen Kommentar