Рад, что это помогло вам, я также потратил много времени, чтобы найти это решение
я трудные времена, когда я пытаюсь использовать Azure AD B2C для проверки подлинности My Web API. Я начну с некоторого фона
Я создал мобильное приложение, которое использует Azure AD B2C для аутентификации пользователей. Я создаю WebView, который отображает этот URL:
Пользователю предлагается войти в Azure Ad, если данные для входа успешны, я получаю ответ, содержащий маркер доступа - эта часть прошла гладко, все работает правильно.
Теперь я хочу создать бэкэнд Web Api. Я создал веб-приложение ASP NET Core, которое позволяет мне выбирать метод аутентификации. Я выбираю аутентификацию Azure AD, чтобы шаблон генерировал для меня все необходимые данные. Соответствующая часть в коде здесь:
Я обновил все необходимые свойства конфигурации, чтобы они соответствовали моим настройкам Azure. В этот момент я ожидал, что смогу вызывать API, используя токен доступа, полученный в мобильном приложении. Я запускаю мобильное приложение локально, выполнил вход, получил токен доступа, скопировал его и попытался вызвать мой веб-интерфейс API (размещенный в IIS express) с помощью почтальона (с заголовком авторизации «Bearer ...»). К сожалению, без удачи - я получаю 401 со следующим заголовком:
Ошибка носителя = "invalid_token", error_description = "Ключ подписи не найден"
Я думал, что токена достаточно для Авторизации API - я понимаю, что в этом весь смысл OAuth. Я что-то пропустил ? Должен ли я иметь некоторые дополнительные настройки? Я заметил, что в конфигурации отсутствует политика входа (которая, по-видимому, требуется для имени AD B2C, поэтому я попытался добавить это:
var validationParameters = new TokenValidationParameters
{
AuthenticationType = "MY_POLICY",
};
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"],
Audience = Configuration["Authentication:AzureAd:Audience"],
TokenValidationParameters = validationParameters
});
Но это тоже не сработало. Буду признателен за любую помощь.
РЕДАКТИРОВАТЬ
Я обнаружил следующую ошибку в журналах Visual Studio:
Носитель не был аутентифицирован. Сообщение об ошибке: IDX10501: Ошибка проверки подписи. Невозможно сопоставить 'kid': '...'