Я пытаюсь внедрить аутентификацию токена Bearer (только) в. NET Core 3.1 API, используя Azure AD.
Я могу получить токен из Azure AD после проверки authorization_code
, и браузер отправляет обратно на мой URL перенаправления со следующим:
{"token_type":"Bearer","scope":"User.Read","expires_in":3600,"ext_expires_in":3600,"access_token":"EwBwA8l6...SzT3qoxGbSMg=="}
(сокращенно)
Как только я получу этот токен, смогу ли я использовать [Authorize]
атрибут прямо на моих API и запросить с помощью токена Bearer в шапке? Когда я это делаю, я получаю ответ 401.
У меня есть это в моем ConfigureServices()
:
services.AddAuthentication(options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Audience = "<guid>";
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuerSigningKey = false,
ValidateAudience = false,
ValidateIssuer = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("abc123")),
TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("abc123"))
};
});
services.AddControllers();
И в Configure()
у меня есть:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
В моем журнале ошибок отображается сообщение:
«Носитель» не был аутентифицирован. Сообщение об ошибке: «SecurityTokenValidator недоступен для токена
Я перепробовал множество комбинаций настроек в Startup.cs, и независимо от того, что я могу получить только 401 при вызове моего API из Почтальон. Я могу получить аутентификацию Cook ie, работающую с примерами кода, которые я нашел в Интернете, но я этого не хочу.
Проблема в том, что токен зашифрован? использовать неправильный токен? Или есть какая-то другая проблема? Нужно ли мне настроить приложение в моем приложении с таблицами базы данных для AspNetUser, et c.?
Короче, я просто пытаюсь сгенерируйте токен Bearer, используя Azure AD в качестве поставщика аутентификации, и сделайте вызовы к моим API, передав заголовок токена Bearer.