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?