是否可以在JWT中包含OAuth范围?

时间:2018-10-26 06:26:59

标签: oauth-2.0 jwt access-token

我正在将OAuth授权服务器端点添加到现有应用程序中。我打算从OAuth令牌端点发出JWT。

当为特定的OAuth范围颁发令牌时,将令牌发布的范围嵌入令牌本身看起来更好,因为通过查看令牌可以更容易地验证令牌是否有权执行特定操作令牌,当客户端稍后使用发出的令牌执行某些操作时。

但是,JWT的standard claim fields似乎没有包括合适的字段来标记OAuth范围。

那么,可以将范围作为JWT中的自定义声明包括在内吗?还有其他方法可以将范围详细信息嵌入到JWT中吗?

2 个答案:

答案 0 :(得分:1)

JWT规范-RFC7519使您能够插入和使用非标准/注册的声明。在规范的4.3. Private Claim Names部分中突出显示了该部分。

  

JWT的生产者和消费者可以同意使用声明名称,      是私有名称:不是注册的声明名称的名称      (第4.1节)或公开声明名称(第4.2节)。与公开声明名称不同,私有声明名称可能会发生冲突,因此应      请谨慎使用。

此外,如果您要求标准注册的权利,请在这里找到-https://www.iana.org/assignments/jwt/jwt.xhtml

或者,如果您只想使用标准声明并且仅将它们与JWT访问令牌一起使用(我假设您引用的JWT是访问令牌),则可以定义一个token introspection endpoint并将范围值放入其响应。范围定义为introspection response

的标准响应参数

答案 1 :(得分:0)

现在有 JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens 草案(可能很快成为标准),许多人已经在实践中使用了。在 2.2.2 部分,它明确指出:

<块引用>

如果授权请求包含范围参数,则相应发布的 JWT 访问令牌必须包含在 [TokenExchange] 的第 4.2 节中定义的范围声明。

范围声明中的所有单独范围字符串必须对 aud 声明中指示的资源有意义。

所以不仅允许有 scope 声明,而且如果请求有声明,甚至是必需的。