我一直在尝试了解OAuth2授权范围的IETF RFC。 Scope OAuth2
scope参数的值表示为以空格分隔的区分大小写的字符串的列表。字符串由授权服务器定义。如果值包含多个以空格分隔的字符串,则它们的顺序无关紧要,并且每个字符串都会向请求的范围添加一个附加的访问范围。
IdentityServer在JWT中将范围输出为字符串数组,而几乎所有其他提供程序都将范围输出为单个空格分隔的字符串。是否可以使用适配器或配置设置让ID4将JWT中的范围作为单个空格分隔的字符串输出?
"scope": [
"openid",
"profile",
"email",
"api"
],
"scope": "openid profile email api"
答案 0 :(得分:0)
根据RFC8693 draft和RFC7662(OAuth 2.0令牌自省):
“作用域”声明的值是一个JSON字符串,其中包含空格- 与令牌关联的范围的单独列表,格式为 在[RFC6749]的3.3节中进行了说明。
而且,即使没有写任何正式定义in this other draft,显示的示例也将范围项用空格分隔。
我个人希望它是一个数组(因为它可以更好地表示范围声明的性质),但是以空格分隔的格式确实更符合OAuth2的标准。