我使用spring boot resttemplate并将HTTP通信委托给Apache HttpClient库。我将服务A和B部署在openshift中,需要与服务C进行交互。服务C位于Kong Gateway的后面,身份验证基于SSO和身份服务器,身份服务器还提供JWT访问令牌以及刷新令牌。
我的问题是关于从服务A或B到C的身份验证。一旦在A或B中进行身份验证,什么是在A和B中安全存储JWT令牌的最佳机制是什么?我在考虑缓存,或者在服务A和B或数据库中,并且我了解每种服务都需要分别存储令牌。永远保持使用刷新令牌,还是定期重新认证并获取新令牌是一种好习惯?
答案 0 :(得分:1)
Authorisation
服务器负责向每个请求中发送的客户端颁发JWT
令牌。现在,它的客户有责任存储令牌。因此,理想情况下,您需要同时使用服务A
和B
来分别存储它们的令牌,因为它们对于它们而言将是不同的。 Here is more on using authorisation with JWT。
答案 1 :(得分:0)
对于可能遇到此问题的任何人,我们在每个Pod中使用内存中的缓存解决了它,这意味着每个Pod都会获取令牌并将其保存并在令牌到期之前逐出它。在这里,我们不会主动执行令牌过期然后再查询新令牌的操作,而是主动逐出缓存中的“令牌”条目并检索新令牌。
我们使用咖啡因作为存储令牌的内存缓存。