Я разработал пользовательский интерфейс и веб-API, используя ASP.net Core 2.1 с аутентификацией Azure AD. Оба зарегистрированы с помощью регистрации в приложении Azure. Я использую приведенный ниже код в пользовательском интерфейсе. Но я получаю несанкционированную ошибку.
string AZURE_AD_INSTANE = "https://login.microsoftonline.com/";
string TENANT_ID = "<tenant GUID>";
string CLIENT_ID = "<Client GUID ofWeb API>";
string SECRET = "<Secret created for Web API under Certificates & secrets>";
string RESOURCE = "https://MyOrg.onmicrosoft.com/TestWebAPI"; //Application ID URI set in Expose an API
ClientCredential ClientCredential = new ClientCredential(CLIENT_ID, SECRET);
string authority = String.Format("{0}{1}", AZURE_AD_INSTANE, TENANT_ID);
AuthenticationContext authContext = new AuthenticationContext(authority);
string accessToken = authContext.AcquireTokenAsync(RESOURCE, ClientCredential).Result.AccessToken;
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44326/api/values/Get");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response = client.SendAsync(request).GetAwaiter().GetResult();
string status = response.StatusCode.ToString();
StartUp.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
Я получаю токен доступа. Когда я захожу на сайт jwt.io, появляется надпись «Подпись проверена». Но вызов API дает код статуса неавторизованного ответа. Когда я проверяю заголовок ответа, он содержит следующую информацию: {Bearer error = invalid_token, error_description = Аудитория недействительна}
Я видел много сообщений, связанных с этой ошибкой. Но не получил никакого решения. Так что кто-нибудь, пожалуйста, скажите мне предложение по решению этой проблемы.
Спасибо.