Я использую приложение 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?
Спасибо!