Сбой аутентификации подключенной учетной записи 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)

  1. приватная задача ValidateClientAuthentication(контекст OAuthValidateClientAuthenticationContext)

  2. приватная задача GrantResourceOwnerCredentials(контекст OAuthGrantResourceOwnerCredentialsContext)

  3. приватная задача GrantClientCredetails(контекст OAuthGrantClientCredentialsContext)

В результате - пользователь успешно аутентифицирован на сервере авторизации клиента, но не может передать токен аутентификации обратно на канал cortana.

Существуют ли какие-либо ограничения в промежуточном программном обеспечении OWIN или в коде. Я не уверен.

Пожалуйста, поделитесь своими мыслями.

Спасибо

0 ответов

Другие вопросы по тегам