Я запускаю новый веб-API и хочу использовать ASP.NET Core 3.0. Я также хочу авторизовать вызывающих абонентов для моего API, используя JWT и Azure AD в качестве поставщика удостоверений.
Я настроил множество веб-API ASP.NET Core 2.x с использованием JWT и Azure AD, которые отлично работали, однако, когда я пробую те же методы с использованием ASP.NET Core 3.0, я получаю 401 каждыйвремя, когда я пытаюсь получить доступ к API.
В моем веб-API ASP.NET Core 2.2 в Startup.cs у меня есть следующее в методе ConfigureServices:
// Add Azure AD OAUTH2.0 Authentication Services
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddAzureAdBearer(options => Configuration.Bind("AzureAd", options));
И у меня естьРаздел AzureAd в моем файле appsettings.json, который имеет значения для ...
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "mydomain.com",
"TenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", //<-- Directory ID for mydomain.com
"ClientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" //<-- Application ID of web API as a registered application in mydomain.com domain
},
Затем в Startup.cs -> Настроить метод, у меня есть ...
app.UseAuthentication();
app.UseMvc();
Инаконец, я украшаю свой контроллер API с помощью ...
[Authorize]
И все это прекрасно работает для ASP.NET Core 2.2.
Однако после создания нового проекта для веб-API ASP.NET Core 3.0 и попытки реализовать одни и те же методы я всегда получаю код состояния HTTP 401.
Я понимаю, что ASP.NET Core 3.0 был только что выпущен, и я должен предположить, что проблема связана с изменениями в работе Core 3.0, но у меня возникают трудности с поиском решения.
Обновление 10/2/19 Я тестирую свои API с помощью Почтальона. В Postman я создаю POST для Azure AD с правильными значениями, необходимыми для получения токена доступа из Azure AD. Я копирую этот действительный токен в заголовок авторизации в GET-запросе к моему API.
Если я установил свой API на ASP.NET Core 2.2 и запустил его, а затем протестировал API с помощью Postman, как описано выше, мой API авторизует запрос и возвращает правильные данные в ответе GET-запроса.
Если я изменяю API на ASP.NET Core 3.0 и пробую снова, я всегда получаю HTTP 401.
Проблема должна быть в том, как ASP.NET Core 3.0 обрабатывает авторизацию JWT икак это делает ASP.NET Core 2.2.