/ / Bad request (400) mit OAuthWebSecurity.RegisterMicrosoftClient - c #, authentication, oauth, dotnetopenauth

Fehlerhafte Anforderung (400) mit OAuthWebSecurity.RegisterMicrosoftClient - c #, Authentifizierung, oauth, dotnetopenauth

ich benutze Microsoft.Web.WebPages.OAuth. Ich konnte mich registrieren Google, Facebook, Twitter, Stack Exchange, MyOpenID...

Jetzt versuche ich hinzuzufügen Microsoft LiveAlso habe ich mich registriert:

OAuthWebSecurity.RegisterMicrosoftClient("applicationID", "key");

und angerufen

OAuthWebSecurity.RequestAuthentication("microsoft", Url.Action("Authorization", new { returnUrl = "/" }));

Bis zu diesem Punkt funktioniert alles gut, ich werde auf die Anmeldeseite umgeleitet. Das Problem ist, wenn ich zurückkomme

OAuthWebSecurity.VerifyAuthentication();

Es sagt:

Der Remote-Server hat einen Fehler zurückgegeben: (400) Fehlerhafte Anforderung.

Was muss ich tun?

Antworten:

1 für die Antwort № 1

Ich hatte das gleiche problem Nach viel Recherche bin ich auf ihn gestoßen dieses Stück Quellcode mit dem Kommentar:

// Only OAuth2 requires the return url value for the verify authenticaiton step

Dies bedeutet, dass wenn Sie anrufen VerifyAuthenticationmüssen Sie die Überladung, die die Rückgabe-URL übergibt, zur Validierung durch den oauth2-Anbieter (in diesem Fall den Microsoft Live ID-Anbieter) verwenden.

Klar genug, wenn ich durchgrabe die exemplarische Vorgehensweise auf der asp.net-WebsiteIch finde, dass sie tatsächlich die Rückgabe-URL als die URL von der Aktion des Rückrufs zurückgeben.

Also statt:

OAuthWebSecurity.VerifyAuthentication();

Du brauchst:

var returnUrl = Url.Action("Authorization", new { returnUrl = "/" })
OAuthWebSecurity.VerifyAuthentication(returnUrl);

Die Rückgabe-URL sollte genau mit der übereinstimmen, die Sie zuvor in angegeben haben RequestAuthentication Methode.


0 für die Antwort № 2

Welche Redirect-Domain verwenden Sie? Dabei stellte ich fest, dass ich, da ich meinen tatsächlichen Domainnamen angegeben hatte, den Domainnamen auf die lokale Site verweisen musste.

Um dies zu umgehen, habe ich der Hosts-Datei einen Eintrag hinzugefügt, um meine Domain auf 127.0.0.1 zu verweisen (d. H., Weil ich lokal debuggt und ausgeführt habe).