AuthenticationProperties.RedirectUri не передается в Google в Challenge ()
В моем веб-приложении я зарегистрировал Google в качестве поставщика единого входа:
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions {
ClientId = "8765.......apps.googleusercontent.com",
ClientSecret = "Secret"
})
Мое приложение не позволяет пользователям регистрироваться / регистрироваться (вместо этого их учетные записи создаются администратором, но они могут позже связать свою учетную запись с Google).
В моем контроллере «Войти через Google» я пытаюсь выдатьChallenge()
перенаправить в гугл. Это не может быть правильным подходом:
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");
Это правильно отправляет пользователя в Google, но затем Google представляетОшибка: redirect_uri_mismatch, говоря это:
URI перенаправления в запросе:HTTP: // локальный: 55262 / Google-входа в аккаунт не соответствует зарегистрированному URI перенаправления.
Я видел эту ошибку раньше, когда возвращаемая коллекция URI на панели управления Google не содержитredirect_uri
указано.
Если я отлаживаю в VS2015, я вижуredirect_uri
свойство устанавливается правильно вAuthenticationProperties
, но похоже, что OWIN / Katana не передает его в Google. Вместо этого, когда я нажимаю на Google, return_uri - это значение по умолчанию, используемое OWIN / Katana. Тот, который я установил, игнорируется.
Детали запроса Google, кажется, подтверждают это:
scope=openid profile email
response_type=code
redirect_uri=http://localhost:55262/signin-google
Что я здесь делаю не так, пожалуйста? Я не должен использоватьChallenge()
разрешить пользователям связывать свою локальную учетную запись приложения с Google?