IdentityServer4 JWT范围是用空格分隔的字符串而不是数组?

时间:2019-07-03 07:25:34

标签: oauth-2.0 scope jwt openid identityserver4

我一直在尝试了解OAuth2授权范围的IETF RFC。 Scope OAuth2

scope参数的值表示为以空格分隔的区分大小写的字符串的列表。字符串由授权服务器定义。如果值包含多个以空格分隔的字符串,则它们的顺序无关紧要,并且每个字符串都会向请求的范围添加一个附加的访问范围。

IdentityServer在JWT中将范围输出为字符串数组,而几乎所有其他提供程序都将范围输出为单个空格分隔的字符串。是否可以使用适配器或配置设置让ID4将JWT中的范围作为单个空格分隔的字符串输出?

"scope": [
    "openid",
    "profile",
    "email",
    "api"
  ],
"scope": "openid profile email api"

1 个答案:

答案 0 :(得分:0)

根据RFC8693 draftRFC7662(OAuth 2.0令牌自省):

“作用域”声明的值是一个JSON字符串,其中包含空格- 与令牌关联的范围的单独列表,格式为 在[RFC6749]的3.3节中进行了说明。

而且,即使没有写任何正式定义in this other draft,显示的示例也将范围项用空格分隔。

我个人希望它是一个数组(因为它可以更好地表示范围声明的性质),但是以空格分隔的格式确实更符合OAuth2的标准。