【发布时间】:2021-08-15 17:26:07
【问题描述】:
我正在使用 OpenID Connect 来控制对我的 REST API 的访问。处理请求时我需要做的一件事是根据请求的 Authorization: Bearer ... 标头中的访问令牌获取 OIDC UserInfo。
到目前为止,我一直在使用 JWT,并且效果很好。我正在考虑扩展它以使用不透明的令牌。
我的策略一直基于我对OpenID Connect Discovery spec, section 4的理解:
- 从访问令牌中提取
iss。 - 通过获取
${iss}/.well-known/openid-configuration并在 JSON 中查询userinfo_endpoint来发现 userinfo 端点。 - HTTP GET
userinfo_endpoint,将访问令牌作为Authorization: Bearer ...标头传递。
这适用于不透明令牌...除了第 1 步。目前,我必须通过带外机制知道发行者是谁,因为我不知道如何从不透明令牌中获取发行者(老实说,考虑到它是不透明,这是有道理的)。我看到了一些可能性:
- 也许我只是应该知道是谁发布的,而我的问题被误导了。
- 也许最好的办法是尝试列出已知发行者的列表,看看其中一个是否有效。
- 也许有一种机制可以发现不透明令牌的发行者。 (The spec refers to WebFinger,但这似乎不适合我的用例。)
- 也许有一些我没有考虑过...
感谢大家的帮助。
【问题讨论】: