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?

Ответы на вопрос(2)

Ваш ответ на вопрос