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

set claim value as array in IdentityServer3

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

但是当用户只有一个权限时,生成的 JWT 包含 属性,名称为 "permission",但值是简单的字符串,否则它是一个数组。我们如何将声明值 "permission" 声明为数组?

这里是 snipper 我们是如何填写声明的:

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

Identity server自带值类型json,所以"permission"属性可以封装为

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