将声明值设置为IdentityServer3中的数组

时间:2016-10-03 09:01:29

标签: c# .net openid jwt identityserver3

我们使用IdentityServer3作为身份提供商,我们的一项声明是权限。

但是当用户只有一个权限时,生成的JWT包含名称为" permission"但值是简单的字符串,否则它是一个数组。我们如何申报索赔价值"许可"作为一个数组?

以下是我们如何填写索赔的摘要:

foreach (var permission in permissions)
{
    claims.Add(new Claim(Scopes.SCOPE_PERMISSION, $"{permission.id}>>{permission.name}"));
}

1 个答案:

答案 0 :(得分:2)

身份服务器附带值类型json,因此“权限”属性可以封装为

claims.Add(
    new Claim(
        Scopes.SCOPE_PERMISSION,
        JsonConvert.SerializeObject(permissions.Select(s => $"{s.id}>>{s.name}")),
        "json"));