spring-security 微服务中的认证模式

wlzqhblo  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(211)

在微服务中有几种管理身份验证的方法,包括服务到服务的身份验证。
1.当用户登录到系统时,发生auth-service调用,并且auth-service返回一个不透明标记(不是JWT),则每个API调用都包含该不透明标记。网关通过auth-service验证标记,并为下游服务生成一个新的JWT标记。因此,下游服务不必每次都调用auth-service来验证标记。
1.从一开始,auth-service将生成一个JWT标记。
2.1.网关将验证令牌并将其传递给下游服务,所有服务都将使用相同的令牌
2.2.网关每次都会验证并生成一个新的令牌,下游服务也会执行相同的操作。
每种方法都有其优缺点。
问题:
方法1.网关每次都需要调用auth-service来验证?
方法2. JWT令牌的过期时间是多少?谁需要处理过期,什么令牌在这两天之间过期,谁需要重新生成它?JWT令牌必须是短期的,因此它是否会影响客户端行为,或者刷新令牌应该在这里说明。
所以我不知道哪种方法好,或者还有其他方法,请指教。

svmlkihl

svmlkihl1#

JWT应该避免暴露给外界,因为这些可能会在自定义索赔中包含敏感信息。特别是如果您在一家大公司工作,在那里您无法跟踪不同索赔中的最终结果。
因此,如果使用opague令牌(您应该这样做),网关应该验证令牌并将其交换到可以在网络内部使用的JWT。
所有服务SHOULD的设置始终考虑到zero trust
如果可能的话,所有的服务都应该获取JWK来验证传入的JWT。并且这些JWK应该定期轮换。
这是为了避免如果恶意行为者获得对内部网络的访问,他不应该仅仅因为他已经通过网关而能够对任何服务进行任何请求。
当涉及到到期时间,这些应该由发行者设置,并应保持较短,因为一个大问题是,它很容易发行一个令牌,但更难撤销一个。
流程通常是这样的:

  • 客户端登录并获得AT(访问令牌)和RT(刷新令牌)
  • 客户端将opague AT令牌提供给后端的服务
  • 网关为JWT交换opague标记
  • 网关将JWT传递给所请求的服务
  • 资源服务器验证JWT
  • 如果请求被拒绝,则将401的HTTPSTATUS返回到调用客户端
  • 客户端接收401,然后将其刷新呈现给将发布新AT令牌的发布者。
  • 使用新的AT令牌重做请求。

相关问题