【发布时间】:2022-01-17 17:29:25
【问题描述】:
我正在实现仅适用于具有特定范围的经典场景的用户可访问的 API。但是我不太了解访问令牌的一些内容。
访问令牌是 JWT
我认为这很简单,我只是接收 JWT,验证它,读取范围。
但由于访问令牌格式未标准化,JWT 可以包含任何内容。我应该假设每次都有范围吗?是否每个 IdP 都将它们放入其中?
访问令牌不透明(或者 JWT 没有范围?)
我需要调用introspect 端点并从中检索数据。
但RFC7662 section 2.2 表示,响应中实际上只有bool active 是必需的数据,其余的都是可选。
这里的“可选”到底是什么意思?
- 该字段是可选的,如果为空则不存在,否则始终存在
或
- 即使令牌具有关联的范围,它也可能会丢失
访问令牌不透明,没有自省端点?
我在 Auth0 论坛上发现 this 帖子解释了他们的不透明和 JWT 令牌。
Auth0 颁发的不透明访问令牌可与 /userinfo 端点一起使用以返回用户的个人资料。
和
为了接收 JWT,您必须在令牌请求中包含一个受众参数。
在这种情况下,我看不到任何获取范围的方法,因为它们不支持令牌自省。我在这里错过了什么?
因此,如果我的实现符合每个 OIDC IdP:
- 如果是 JWT,请检查其中的作用域
- 如果不是 JWT,请自省并检查响应中的范围
- 如果不是 JWT 且没有自省端点,???
还有什么我需要知道/担心的吗?
【问题讨论】:
标签: oauth-2.0 jwt access-token