JWT下游微服务授权的交换参考令牌

JWT下游微服务授权的交换参考令牌,jwt,microservices,identityserver4,Jwt,Microservices,Identityserver4,我目前正在创建一个基于微服务体系结构的新应用程序,身份验证由Identity Server 4提供 在进行了大量研究并建立了概念验证之后,我设置了Identity Server,以确保API和本机应用程序能够使用令牌成功访问这些服务 最初,客户机获得了一个用于访问API的访问令牌,但现在我将其切换为使用引用令牌。现在,谈谈这个问题 这里我想采用的方法是采用一个微服务网关,它接收一个引用令牌,然后将其转换为JWT,以便包含在对下游微服务的任何请求中。在网关内,如何将入站引用令牌“交换”为JWT?I

我目前正在创建一个基于微服务体系结构的新应用程序,身份验证由Identity Server 4提供

在进行了大量研究并建立了概念验证之后,我设置了Identity Server,以确保API和本机应用程序能够使用令牌成功访问这些服务

最初,客户机获得了一个用于访问API的访问令牌,但现在我将其切换为使用引用令牌。现在,谈谈这个问题

这里我想采用的方法是采用一个微服务网关,它接收一个引用令牌,然后将其转换为JWT,以便包含在对下游微服务的任何请求中。在网关内,如何将入站引用令牌“交换”为JWT?Identity Server中是否有什么东西可以在这里提供帮助?或者我是否需要使用内省端点,发送引用令牌并检索声明,以便在网关服务内构造JWT,以便将授权头传递给所有下游服务


如果有任何进一步的信息可以帮助我理解体系结构的目标,请告诉我。

这是一个很好的扩展授权用例。见文件:


我想我会在这里继续介绍我的实现的一些细节,以防其他人希望使用引用令牌保护API网关,以及需要JWT的下游服务

我已经实现了一个在API网关中运行的ASP.Net核心中间件。中间件在Identity Server身份验证中间件之后、MVC中间件之前的管道中运行。中间件的目的是获取入站引用令牌,并将其与Identity Server交换(使用扩展授权),以获得JWT,该JWT可在调用下游微服务时在授权标头中使用

中间件在上可用,也可以作为。关于中间件用例的更多详细信息可以在GitHub自述中看到,另外还有关于安装和配置中间件的详细信息

除了执行访问令牌的参考令牌交换外,中间件还内置了对缓存的支持,从而减少了到Identity Server执行令牌交换的往返次数


如果任何人想要使用中间件,并且对安装和配置有文档中未涉及的问题,请在GitHub存储库中添加一个标记为“问题”的问题。

谢谢,这与我需要的完全一样。我将关注实施情况并跟踪结果。我花了相当多的时间翻阅这些文件——不确定我怎么会错过这一部分!我添加了扩展授权功能,果然,它完全满足了我的需要。我有一些关于在网关API中采用此方法的问题,但是,我理解这些可能不是特定于Identity Server的,但我认为它们与最初的问题相关。由于网关进行的大多数下游调用都需要委托JWT进行授权,因此我正在寻找最干净的方法,使JWT可用于所有网关控制器。我倾向于使用自定义中间件来处理交换(使用缓存)——这是否可行?