Предполагается, что вы обращаетесь к этим учебным пособиям:
- Веб-приложение учебников Active Directory B2C
- Учебники Active Directory B2C Web Api
И связанный Проект GitHub (основная ветка, commit bf3bcce)
У меня была такая же проблема.TaskWebApp работает нормально, но доступ к представлению Tasks, основанному на TaskWebApi, приводит к циклу авторизации.Вот что я нашел и как заставить это работать.
TL; DR
В файле Web.config для проекта TaskWebApp добавьте следующую строку в конфигурацию / appSettings:
<add key="ida:TenantId" value="[your AAD B2C Tenant GUID here]" />
Сохранение, сборка и запуск.Вы должны пройти этот цикл проверки подлинности.
Подробности
В Visual Studio я установил точку останова на строке 29 TasksController.cs:
var accounts = await cca.GetAccountsAsync();
Я могу убедиться, что этот LOC включен, когда я перехожу к / Tasks.Войдя в каждый LOC, вызываемый после этого, я проверил каждую часть стека вызовов, чтобы увидеть, где возвращается ноль.
- GetAccountsAsync ()
- {внешний код}
- TaskWebApp.Utils.MSALPerUserMemoryTokenCache .UserTokenCacheBeforeAccessNotification (TokenClassNotification) NOT NULL
- .LoadUserTokenCacheFromMemory () НЕ NULL
В частности, строка 40 в TaskWebApp \ Utils \ ClaimsPrincipalExtension.cs возвращает значение NULL.
string tenantId = Globals.TenantId;
Он присваивает идентификатор арендатора из класса Globals, определенного в TaskWebApp Web.config, но использует значение из ключа "ida: TenantId", которое нигде не указывается.