Итак, у меня возникли проблемы с аутентификацией Bearer при настройке IdentityServer4.По сути, я не смог вызвать ресурс API и получил ошибку 401.Когда я добавил заголовок авторизации с access_token.Я смог получить данные из моего веб-запроса.
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new
AuthenticationHeaderValue("Bearer", authToken);
var content = await
client.GetStringAsync("http://localhost:5000/localapi");
}
Способ, который я получил в auth_token, заключался в том, чтобы сохранить утверждение пользователя, которое было получено из обратного вызова SecurityTokenValidated, подтвержденного настройкой клиента сервера idenity.
Notifications = new OpenIdConnectAuthenticationNotifications
{
SecurityTokenValidated = notification =>
{
var identity = notification.AuthenticationTicket.Identity;
identity.AddClaim(claim: new Claim(type: "auth_token", value:
notification.ProtocolMessage.AccessToken));
return Task.CompletedTask;
}
}
Хотя это решает мою проблему с авторизацией, я хочу убедиться, что я не открываю вектор атаки, сохраняя свой auth_token в заявках на идентичность.Может кто-нибудь сказать мне, если это представляет проблему безопасности.
Причина, по которой я обеспокоен, заключается в том, что я смог использовать Postman для создания простого запроса и вручную вставить тот же токен авторизации на предъявителя в запрос, а затем отправить его.Ответ дал мне «защищенные» данные API обратно.Это говорит мне, что если кто-то получит в руки auth_token, он сможет получить доступ к API (или, может быть, Postman что-то обойдёт?).