Реализовать контроль доступа на основе ролей с помощью IdentityServer4 и .NET Core - PullRequest
0 голосов
/ 12 февраля 2019

У нас есть существующая база данных, и нам необходимо реализовать управление доступом на основе ролей с помощью IdentityServer4 и .NET Core.

Мой вопрос таков:

1 Поддерживает ли IdenityServer4 RBAC?Например, это через объем претензии?Как это должно быть реализовано?

2 Можно ли использовать существующую базу данных?Или я должен создать новую базу данных?

Буду признателен за любой совет или пример кода.

https://github.com/IdentityServer/IdentityServer4.Samples/tree/master/Quickstarts/7_EntityFrameworkStorage

Обновление

Мы реализуем тип гранта владельца ресурса Passowrd и RBAC.

Будем благодарны за любые советы или ссылки на пример кода.

1 Ответ

0 голосов
/ 14 февраля 2019

На стороне Identity Server вы можете создать Службу профилей , чтобы IDS4 включал role утверждение при выдаче токенов.

Если, например, использовать ASP.NET Identity для управления пользователями /ролей, вы можете создать службу профиля, например:

public class MyProfileService : IProfileService
{
    public MyProfileService()
    { }

    public Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        var roleClaims = context.Subject.FindAll(JwtClaimTypes.Role);
        List<string> list = context.RequestedClaimTypes.ToList();
        context.IssuedClaims.AddRange(roleClaims);
        return Task.CompletedTask;
    }

    public Task IsActiveAsync(IsActiveContext context)
    {
        // await base.IsActiveAsync(context);
        return Task.CompletedTask;
    }
}

и зарегистрироваться в Startup.cs:

services.AddTransient<IProfileService, MyProfileService>();

На стороне клиента вы должны сопоставить заявку на роль из вашего токена JWT и попробоватьниже конфигурации в AddOpenIdConnect middleware:

  options.ClaimActions.MapJsonKey("role", "role", "role");
  options.TokenValidationParameters.RoleClaimType = "role";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...