Как включить ролевой запрос в accesstoken? - PullRequest
2 голосов
/ 12 апреля 2019

Я защищаю свой API с помощью identityserver4 и asp.net. База данных идентичности имеет таблицы ролей и ролей. Для моей модели безопасности мне нужны роли с ее ролевой заявкой. Я включаю роль для доступа к токену, но не понимаю, как включить ролевой запрос.

//Example of API with roles
new ApiResource("api1", "My API")
{
   UserClaims = new []{ "name", "role" }
}

1 Ответ

1 голос
/ 12 апреля 2019

Я ответил здесь как включить роли в токены доступа. Если вы хотите дополнительно включить заявки на роль, вам нужно будет использовать RoleManager.

public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
    context.IssuedClaims.AddRange(context.Subject.Claims);

    var user = await _userManager.GetUserAsync(context.Subject);

    var roles = await _userManager.GetRolesAsync(user);

    foreach (var role in roles)
    {
        var roleClaims = await RoleManager.GetClaimsAsync(role);

        context.IssuedClaims.Add(new Claim(JwtClaimTypes.Role, role)); //Adds "role" claim
        context.IssuedClaims.AddRange(roleClaims); //Adds other role claims
    }
}
...