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

Tar*_*bhi 2 openid scope oauth-2.0 jwt identityserver4

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

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

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

"scope": [
    "openid",
    "profile",
    "email",
    "api"
  ],
Run Code Online (Sandbox Code Playgroud)
"scope": "openid profile email api"
Run Code Online (Sandbox Code Playgroud)

小智 5

根据RFC8693草案RFC7662(OAuth 2.0令牌内省):

“scope”声明的值是一个 JSON 字符串,其中包含与令牌关联的以空格分隔的范围列表,格式如 [RFC6749] 的 3.3 节中所述。

而且,即使那里没有写出正式的定义,在另一个草案中,示例显示的范围项也以空格分隔。

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