AuthenticationProperties.RedirectUri não é passado para o Google no Challenge ()

No meu aplicativo da web, registrei o Google como um provedor de logon único:

app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions {
    ClientId = "8765.......apps.googleusercontent.com",
    ClientSecret = "Secret"
})

Meu aplicativo não permite que os usuários se inscrevam / registrem (em vez disso, suas contas são criadas por um administrador, mas depois podem vincular sua conta ao Google).

No meu controlador "Fazer login com o Google", estou tentando emitir umChallenge() para redirecionar para o Google. Essa pode não ser a abordagem correta:

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");

Isso envia o usuário corretamente ao Google, mas o Google apresentaErro: redirect_uri_mismatch, dizendo que:

O URI de redirecionamento na solicitação:http: // localhost: 55262 / signin-google não correspondeu a um URI de redirecionamento registrado.

Eu já vi esse erro antes quando a coleção de URIs de retorno no painel de controle do Google não contém oredirect_uri Especificadas.

Se eu depurar no VS2015, posso ver oredirect_uri propriedade sendo definida corretamente noAuthenticationProperties, mas parece que OWIN / Katana não está passando para o Google. Em vez disso, quando eu clico no Google, o return_uri é o padrão usado pelo OWIN / Katana. O que eu defini está sendo ignorado.

Os detalhes da solicitação do Google parecem confirmar isso:

scope=openid profile email
response_type=code
redirect_uri=http://localhost:55262/signin-google

O que estou fazendo de errado aqui, por favor? Eu não deveria estar usandoChallenge() permitir que os usuários vinculem sua conta de aplicativo local ao Google?

questionAnswers(2)

yourAnswerToTheQuestion