AuthenticationProperties.RedirectUri wird in Challenge () nicht an Google übergeben.
In meiner Webanwendung habe ich Google als Single Sign-On-Anbieter registriert:
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions {
ClientId = "8765.......apps.googleusercontent.com",
ClientSecret = "Secret"
})
Meine App ermöglicht Benutzern nicht, sich anzumelden / zu registrieren (stattdessen werden ihre Konten von einem Administrator erstellt, aber sie können ihr Konto später mit Google verknüpfen).
Auf meinem Controller "Mit Google anmelden" versuche ich, ein @ auszugebeChallenge()
, um zu Google weiterzuleiten. Dies ist möglicherweise nicht der richtige Ansatz:
string redirectUri = "http://localhost:55262/SSO/Google/ProcessToken"; // actually created in code, but shown as string for clarity
AuthenticationProperties properties = new AuthenticationProperties();
properties.RedirectUri = Server.UrlEncode(redirectUri);
Context.GetOwinContext().Authentication.Challenge(properties, "Google");
Dies sendet den Nutzer korrekt an Google, aber Google präsentiert dannError: redirect_uri_mismatch, sagt, dass
Die Weiterleitungs-URI in der Anforderung:http: // localhost: 55262 / signin-google stimmte nicht mit einem registrierten Umleitungs-URI überein.
Ich habe diesen Fehler bereits gesehen, als die Rückgabe-URI-Sammlung im Google-Steuerungsfeld nicht das @ enthälredirect_uri
angegeben
Wenn ich in VS2015 debugge, sehe ich dasredirect_uri
Eigenschaft wird im @ richtig gesetAuthenticationProperties
, aber es scheint, dass OWIN / Katana es nicht an Google weitergibt. Wenn ich stattdessen Google drücke, ist return_uri die Standardeinstellung von OWIN / Katana. Die von mir eingestellte wird ignoriert.
Die Google-Anfragedetails scheinen dies zu bestätigen:
scope=openid profile email
response_type=code
redirect_uri=http://localhost:55262/signin-google
Was mache ich hier bitte falsch? Sollte ich nicht @ benutzChallenge()
, damit Nutzer ihr lokales Anwendungskonto mit Google verknüpfen können?