Вход в приложение Azure AD V2 с использованием учетной записи Microsoft - PullRequest
0 голосов
/ 29 ноября 2018

Я использую приложение Azure AD V2 для аутентификации в своем приложении на основе Angular.Я использую веб-API ASP.NET для серверной части.

Я использую поток кода авторизации для получения кода аутентификации и использую его для извлечения токена доступа пользователя и обновления токена, как упомянуто в статье: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

Этот поток отлично работает для меня с учетными записями Azure AD.Когда я захожу с использованием учетной записи outlook, он предоставляет мне код, но когда я пытаюсь получить токен доступа с помощью кода, он не работает, и в ответ я получаю ошибку Bad Request.

Ниже приводится описание, которое я использую вВеб-API:

        public async Task<string> GetAccessToken(string code)
        {
            string token = "", refresh_token = "";            

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            var keyValuePairs = new List<KeyValuePair<string, string>>();
            keyValuePairs.Add(new KeyValuePair<string, string>("scope", AppsConfiguration.idaScope));
            keyValuePairs.Add(new KeyValuePair<string, string>("client_id", AppsConfiguration.idaClient_id));
            keyValuePairs.Add(new KeyValuePair<string, string>("client_secret", AppsConfiguration.idaClient_secret));
            keyValuePairs.Add(new KeyValuePair<string, string>("grant_type", AppsConfiguration.grant_type_authorization_code));
            keyValuePairs.Add(new KeyValuePair<string, string>("code", code));
            keyValuePairs.Add(new KeyValuePair<string, string>("redirect_uri", AppsConfiguration.idaRedirect_uri));
            var client1 = new HttpClient();
            var req = new HttpRequestMessage(HttpMethod.Post, AppsConfiguration.idaTokenEndpoint) { Content = new FormUrlEncodedContent(keyValuePairs) };

            using (var res = client1.SendAsync(req).Result)
            {
                if (res.IsSuccessStatusCode)
                {
                    var jsonresult = JObject.Parse(await res.Content.ReadAsStringAsync());
                    token = (string)jsonresult["access_token"];
                    refresh_token = (string)jsonresult["refresh_token"];    
                }
            }

            return token;
        }

Нужно ли выполнять какую-либо конкретную настройку в приложении Azure AD V2?

Спасибо!

1 Ответ

0 голосов
/ 04 декабря 2018

Я использовал URL-адрес входа для конечной точки v2 как: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={client id} ....

Хотя это работало для учетных записей Active Directory и Microsoft, оно не работало для Microsoft Personalучетные записи, такие как hotmail / outlook.

Для меня это сработало, когда я изменил вышеуказанный URL для входа в систему: https://login.microsoftonline.com/{domain name / tenand id} /oauth2/v2.0/authorize?client_id= {идентификатор клиента} ....

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...