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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage