MicrosoftIdentityWebApi не работает для веб-приложения при добавлении в автозагрузку
Я добавляю этот вопрос, потому что какое-то время я пытался его найти и хотел добавить сюда ссылку для всех, кто выдергивает волосы из-за той же проблемы.
При подключении Azure B2C я изо всех сил пытался заставить серверную часть иметь возможность читать утверждения в токене, исходящем из Azure. Я проверил, что токен действителен и должен иметь претензии с помощью jwt.io и примеров приложений, и я настроил свое приложение на чтение токена, но каждый раз, когда мое приложение пыталось прочитать утверждения в AuthorizationHandlerContext.User.Identity.Claims, они всегда были пустой.
При дальнейшем исследовании выяснилось, что в Startup.cs настроенная мной аутентификация никогда не выполнялась.
Была поражена следующая строка:
Services
.AddAuthentication(*some schema*)
.AddMicrosoftIdentityWebApi(options =>
{
//set some options
}, options =>
{
//set some options
})
Но код, который на самом деле устанавливал параметры, никогда не работал.
Если у вас возникла аналогичная проблема, см. Мой ответ ниже.
1 ответ
Проблема заключалась в том, что в моем базовом классе запуска была эта строка из предыдущей реализации аутентификации:
services.AddIdentity<SomeUserClass, IdentityRole>();
После того, как это было удалено, я смог получать заявки в том формате, в котором их отправляла Azure B2C, и интегрировать их в свое приложение.