“范围”是标准声明吗?
Posted
技术标签:
【中文标题】“范围”是标准声明吗?【英文标题】:Is "scope" a standard claim? 【发布时间】:2022-01-07 02:48:12 【问题描述】:OpenID Connect、JWT 或 OAuth 中是否有任何标准的 scope
声明?
在IdentityServer 4 documentation 中,有一个“范围”,它是一个空格分隔的字符串。
"client_id": "mobile_app",
"sub": "123",
"scope": "read write delete"
但是从我的 IdentityServer 4 实例中,我在访问令牌中获得了一个“范围”声明,它是一个字符串数组。
// ...
"client_id": "mobile_app",
"sub": "123",
"scope": [ "openid", "profile", "email", "offline_access" ],
"amr": [ "pwd" ]
在OpenID Connect Core 1.0 规范中,我没有看到将“范围”列为声明。 在RFC 7519 JSON Web Token (JWT) 规范中,我没有看到将“范围”列为声明。
【问题讨论】:
【参考方案1】:大多数提供者都支持 AT+JWT 令牌类型,并指定它应包含范围声明:
JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens上面写着:
如果授权请求包含范围参数,则 相应颁发的 JWT 访问令牌必须包含一个范围声明 在 [TokenExchange] 的第 4.2 节中定义。
范围声明中的所有单个范围字符串必须有意义 用于 aud 声明中指示的资源。
【讨论】:
【参考方案2】:scope
声明由Token Exchange RFC 标准化。根据规范,它应该是一个 JSON 字符串,带有空格分隔的范围标记。
“范围”声明的值是一个 JSON 字符串,其中包含与令牌关联的范围的空格分隔列表...
【讨论】:
以上是关于“范围”是标准声明吗?的主要内容,如果未能解决你的问题,请参考以下文章