问题描述
我们有一个由 OIDC 保护的 API(实际上是几个微服务)。授权服务器由我们的客户(不是我们内部的)拥有和管理,并为我们的 SPA 提供身份令牌。然后,SPA 将该身份令牌传递给我们的后端服务器,该服务器验证令牌、提取 SubjectId(用户),然后在内部数据库中查找他们的角色。我们不使用令牌进行授权(意味着我们忽略声明),它仅用于身份验证。
我们有一个后端 Windows 服务,它在需要调用相同 API 的安全环境中运行(因此它可以安全地存储机密)。为了调用 API,它需要一个 OIDC 身份令牌来提供身份验证。安全地做到这一点的最佳方法是什么?
我们研究了这些选项:
- 用户名/密码流 (OIDC) - 我们拒绝了它,因为它已被弃用。这使得它不是新代码的可靠选择,而且我们无法确定我们的客户现在和将来是否会允许使用它。
- 客户端凭据流 (OIDC) - 我们尝试过这个...但它只提供没有身份令牌的访问令牌。我们的整个要求是一个身份令牌(因为我们使用它来查找系统中的角色)...所以这似乎不是一个选项。
- 我看了这篇文章:https://nordicapis.com/how-to-handle-batch-processing-with-oauth-2-0/ 很有趣。我可以设置一个非过期(或非常长)的身份令牌,仅限于一个流或另一个流......但需要我托管和 OIDC 服务器或管理他们的。我们的客户不会授予访问权限。
- Martin Fowler 写了一篇关于为此目的使用刷新令牌的文章:https://martinfowler.com/articles/command-line-google.html 有两个问题:它用于 Auth 而不是 OIDC...所以它不处理身份令牌。应该可以工作,但很好奇是否已经完成。此外,就我而言,没有人在刷新令牌过期时刷新它......我需要一些不会过期或可以由后端服务自动刷新的东西。
什么是最好的选择?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)