JWT 的 Exchange 参考令牌 - 下游微服务授权
Exchange reference token for JWT - downstream microservices authorization
我目前正在创建一个基于微服务架构的新应用程序,身份验证由 Identity Server 4 提供。
经过大量研究并设置了概念证明,我设置了身份服务器来保护 API 和使用令牌成功访问这些服务的本机应用程序。
最初向客户端颁发了一个用于访问 API 的访问令牌,但我现在已将其切换为使用参考令牌。现在,进入正题!
我想在这里采用的方法是采用微服务网关,它接收一个引用令牌,然后将其转换为 JWT,以包含在对下游微服务的任何请求中。在网关内,如何 "exchange" JWT 的入站参考令牌? Identity Server 中有什么可以提供帮助的吗?或者我是否需要使用内省端点、发送参考令牌并检索声明以在网关服务中构建 JWT 以将授权 header 传递给所有下游服务?
如果我可以提供任何进一步的信息来帮助理解架构的目标,请告诉我。
这是延期拨款的一个很好的用例。查看文档:
https://identityserver4.readthedocs.io/en/release/topics/extension_grants.html
我想我会在这里跟进一些关于我的实现的细节,以防它对任何其他希望使用引用令牌保护 API 网关以及需要 JWT 的下游服务的人有用。
我已经实现了一个在 API 网关中运行的 ASP.Net 核心中间件。中间件在身份服务器身份验证中间件之后和 MVC 中间件之前的管道中运行。中间件的目的是获取入站引用令牌并与身份服务器(使用扩展授权)交换此令牌以获得可在授权中使用的 JWT header 在调用下游微服务时。
中间件在 GitHub and also as a NuGet package. Further detail on the use case of the middleware can be seen in the GitHub ReadMe and there is also full detail on installing and configuring the middleware available in the GitHub Wiki 上可用。
除了执行引用令牌与访问令牌的交换之外,中间件还内置了对缓存的支持,减少了到身份服务器执行令牌交换的往返次数。
如果有人想使用中间件并且对文档未涵盖的安装和配置有疑问,请在标记为问题的 GitHub 存储库中添加问题。
我目前正在创建一个基于微服务架构的新应用程序,身份验证由 Identity Server 4 提供。
经过大量研究并设置了概念证明,我设置了身份服务器来保护 API 和使用令牌成功访问这些服务的本机应用程序。
最初向客户端颁发了一个用于访问 API 的访问令牌,但我现在已将其切换为使用参考令牌。现在,进入正题!
我想在这里采用的方法是采用微服务网关,它接收一个引用令牌,然后将其转换为 JWT,以包含在对下游微服务的任何请求中。在网关内,如何 "exchange" JWT 的入站参考令牌? Identity Server 中有什么可以提供帮助的吗?或者我是否需要使用内省端点、发送参考令牌并检索声明以在网关服务中构建 JWT 以将授权 header 传递给所有下游服务?
如果我可以提供任何进一步的信息来帮助理解架构的目标,请告诉我。
这是延期拨款的一个很好的用例。查看文档:
https://identityserver4.readthedocs.io/en/release/topics/extension_grants.html
我想我会在这里跟进一些关于我的实现的细节,以防它对任何其他希望使用引用令牌保护 API 网关以及需要 JWT 的下游服务的人有用。
我已经实现了一个在 API 网关中运行的 ASP.Net 核心中间件。中间件在身份服务器身份验证中间件之后和 MVC 中间件之前的管道中运行。中间件的目的是获取入站引用令牌并与身份服务器(使用扩展授权)交换此令牌以获得可在授权中使用的 JWT header 在调用下游微服务时。
中间件在 GitHub and also as a NuGet package. Further detail on the use case of the middleware can be seen in the GitHub ReadMe and there is also full detail on installing and configuring the middleware available in the GitHub Wiki 上可用。
除了执行引用令牌与访问令牌的交换之外,中间件还内置了对缓存的支持,减少了到身份服务器执行令牌交换的往返次数。
如果有人想使用中间件并且对文档未涵盖的安装和配置有疑问,请在标记为问题的 GitHub 存储库中添加问题。