scope是否为OpenID Connect、JWT或OAuth中的标准声明?
关于OAuth、OIDC、JWT中
scope声明的标准说明 首先直接给出结论:scope不属于JWT、OpenID Connect Core 1.0的标准声明,它是OAuth 2.0体系下针对访问令牌载荷的扩展约定。
你遇到的两种scope格式都属于合法情况:
- OAuth 2.0核心规范定义授权请求阶段的
scope参数为空格分隔的字符串形式,早期的实现通常会直接把这个形式沿用到访问令牌的载荷里,也就是你在文档里看到的字符串格式:
{ "client_id": "mobile_app", "sub": "123", "scope": "read write delete" }
- 目前主流的OAuth2实现(包括你用的IdentityServer4)默认会把
scope序列化为字符串数组格式,这是后续的OAuth 2.0 JWT访问令牌规范明确允许的格式,两种格式的语义完全一致,不存在哪一种不符合标准的问题:
{ // ... "client_id": "mobile_app", "sub": "123", "scope": [ "openid", "profile", "email", "offline_access" ], "amr": [ "pwd" ] }
如果需要让IdentityServer4返回空格分隔的字符串格式scope,你可以修改服务端的Claims序列化配置来实现。
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

