【发布时间】:2020-08-22 16:32:54
【问题描述】:
我们目前正在使用 IdentityServer4 github 项目开发 API 和 IdentityServer:
Github 存储库:https://github.com/IdentityServer/IdentityServer4
文档:https://identityserver4.readthedocs.io/en/latest/
我们正在考虑 API 服务器或服务提供者 (SP) 与身份服务器或身份提供者 (IdP) 通信的最有效和安全的方式。我们还没有找到很多信息。
这张图向我们展示了:
服务提供商 (SP) 向身份提供商 (IdP) 请求用户信息(步骤 5:用户信息检索)
(来源:https://www.researchgate.net/figure/OpenID-Connect-Authorization-Code-Flow_fig1_320282638)
- SP 如何向 IdP 询问这些信息?例如,他是否会发送包含用户发送的访问令牌的 HTTP Post “token-info”?
- 如果是这样,IdP 如何理解此请求来自 SP?
我们认为我们可以:
- 在 IdP 和 SP 之间使用特定的 SSL 证书并以某种方式对其进行验证,
- 还有 RSA 使用 IdP 已知的证书对访问令牌的哈希进行签名?
我们也想过:
- 将 SP 本身注册为 IdP 的特定客户端和特定声明,
- 此声明仅提供给 SP,并允许它发送请求以询问有关访问令牌的用户信息
- 此外,SP 有能力在有限的时间内存储用户关于给定和先前发送给 IdP 的访问令牌的信息(在 AccessToken / 用户信息的字典中),时间等于访问令牌?如果在访问令牌的有效期内资源被消耗了一定次数,这将阻止服务提供者不断地从访问令牌中询问用户信息
我们也可以提供代码,但我们认为这个问题主要是架构问题。
【问题讨论】:
-
你的问题涵盖了很多。所以也许更好地提出更细粒度的问题,但我希望我的回答是一个起点:-)