Я пытаюсь реализовать поток ROPC в API asp.net.Подскажите, пожалуйста, как правильно добиться этого в ядре ASP.net, используя встроенную библиотеку аутентификации.Если это невозможно, каковы альтернативы
Я могу получить токен доступа с помощью http-вызова к конечной точке Azure AD токен.Но я не могу проверить токен, используя встроенную библиотеку аутентификации, мы можем реализовать это без HTTP-вызова, но используя встроенную библиотеку.
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
Я использую приведенный ниже кодфрагмент для получения токена доступа
private async Task<string> GetTokenAsync(string username, string password)
{
string grantType = "password";
string tenantId = Configuration["AzureAdNative:TenantId"];
string clientId = Configuration["AzureAdNative:ClientId"];
string resource = Configuration["AzureAdNative:Resource"];
string endpoint = "https://login.microsoftonline.com/" + tenantId + "/oauth2/token";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
var dict = new Dictionary<string, string>();
dict.Add("grant_type", grantType);
dict.Add("client_id", clientId);
dict.Add("username", username);
dict.Add("password", password);
dict.Add("resource", resource);
var req = new HttpRequestMessage(HttpMethod.Post, endpoint) { Content = new FormUrlEncodedContent(dict) };
var res = await client.SendAsync(req);
string result = res.Content.ReadAsStringAsync().Result;
var jwt = JObject.Parse(result);
return result;
// return jwt.GetValue("access_token").ToString();
}
, получающего несанкционированную ошибку 401 при проверке с использованием приведенного выше кода.токен доступа отправляется в заголовке авторизации (например: Авторизация: Bearer e4dgkddskdsdk).