Сбой аутентификации подключенной учетной записи Cortana
Мы разрабатываем пользовательский сервер авторизации с использованием MVC-Owin-OAuth2 и интегрируем его с Cortana. Однако мы обнаружили, что маркер аутентификации - предоставление кода не запускается, когда он проходит через канал Cortana.
В ходе расследования мы обнаружили, что он пропускает конфигурацию авторизации OWIN, которая не была получена из канала cortana.
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
AuthorizeEndpointPath = new PathString(Paths.AuthorizePath),
TokenEndpointPath = new PathString(Paths.TokenPath),
ApplicationCanDisplayErrors = true,
#if DEBUG
AllowInsecureHttp = true,
#endif
// Authorization server provider which controls the lifecycle of Authorization Server
Provider = new OAuthAuthorizationServerProvider
{
OnValidateClientRedirectUri = ValidateClientRedirectUri,
OnValidateClientAuthentication = ValidateClientAuthentication,
OnGrantResourceOwnerCredentials = GrantResourceOwnerCredentials,
OnGrantClientCredentials = GrantClientCredetails
},
// Authorization code provider which creates and receives authorization code
AuthorizationCodeProvider = new AuthenticationTokenProvider
{
OnCreate = CreateAuthenticationCode,
OnReceive = ReceiveAuthenticationCode,
},
// Refresh token provider which creates and receives referesh token
RefreshTokenProvider = new AuthenticationTokenProvider
{
OnCreate = CreateRefreshToken,
OnReceive = ReceiveRefreshToken,
}
});
Кроме того, параметр State в строке запроса передается как пустой.
Следующие методы не используются при вызове из канала CORTANA: 1. Закрытая задача ValidateClientRedirectUri(контекст OAuthValidateClientRedirectUriContext)
приватная задача ValidateClientAuthentication(контекст OAuthValidateClientAuthenticationContext)
приватная задача GrantResourceOwnerCredentials(контекст OAuthGrantResourceOwnerCredentialsContext)
приватная задача GrantClientCredetails(контекст OAuthGrantClientCredentialsContext)
В результате - пользователь успешно аутентифицирован на сервере авторизации клиента, но не может передать токен аутентификации обратно на канал cortana.
Существуют ли какие-либо ограничения в промежуточном программном обеспечении OWIN или в коде. Я не уверен.
Пожалуйста, поделитесь своими мыслями.
Спасибо