Comments 12
Статье 2 часа, а ссылки на документацию уже успели побиться. Есть подозрение, что в черновиках она пробыла несколько лет.
Тут главное:
IdentityServer4 will be maintained with security updates until November 2022.
Может пора закопать стюардессу?
Тут скорей особенность в том, что в этой версии лицензия еще позволяет где попало использовать
Для "где попало" актуальная версия и так будет бесплатной, а для компании с доходом $1M+ это обойдется в сумму с десяток тысяч долларов в год. Не факт, что поддерживать на своих плечах легаси выйдет дешевле.
Ссылки перебил, по поводу "закопать стюардессу". Для относительно простых задач авторизации, в частности, доступ к полному списку сущностей или к конкретной сущности IS используем до сих пор и, как по мне, он прекрасно справляется, ну, для более сложных ACL, ABAC или RBAC (https://habr.com/ru/companies/custis/articles/248649/)
А я вам и не предлагаю отказываться от IS. Речь про версию 4, которая уже не поддерживается, в то время, как есть актуальная и живая 7.
Спасибо за предложение, обязательно попробуем!
А есть где-то список того, что появилось в 7 и что было в 4? Мне для сравнения надо его увидеть.
Тоже смотрю, если получится подборку сделаю
Можно почитать описания мажорных релизов на гитхабе, например. Или рекомендации по обновлению в документации, в зависимости от мотивов вашего интереса.
задача разграничения прав доступа к ресурсам, то есть задача аутентификации
только это задача авторизации
Большое спасибо автору за статью! У меня есть запрос на рассказ про "другую историю". Интересно узнать как настраивается валидация токенов на IS и как клиентское приложение конфигурируется при таком workflow.
Валидация токенов осуществляется в каждом сервисе отдельно, IS мы используем только для выдачи полномочий. То есть шифровать или записывать токен может только IS, а читать каждый сервис самостоятельно:
var tokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuerSigningKey = true,
ValidateLifetime = false,
IssuerSigningKey = securityKey,
ValidateIssuer = false,
};
services.AddSingleton(tokenValidationParameters)
.AddSingleton<JwtSecutiryTokenDecodeService>()
.AddSingleton<AccessVerificator>();
services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.TokenValidationParameters = tokenValidationParameters;
});
services.AddAuthorization(options =>
{
// политика по-умолчанию общая для всех
options.AddPolicy("TestPolicy", policy =>
{
policy.AuthenticationSchemes = new List<string> { "Bearer" };
policy.RequireAuthenticatedUser();
policy.RequireClaim("aud", "test");
});
});
Применение Identity Server 4 в распределенном монолите