Pull to refresh

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");
    });
});

Sign up to leave a comment.

Articles