В API ASP.NET Core 3.0 как реализовать токены-носители JWT - PullRequest
1 голос
/ 02 октября 2019

Я запускаю новый веб-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.

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