保持无状态策略,安全地将JWT用作身份验证

时间:2019-12-12 17:39:41

标签: authentication cookies jwt stateless

地狱,我正在考虑通过保持无状态目的并避免XSS和CSRF而不使用完整的基于Cookie的身份验证来使用JWT作为身份验证的正确方法

这是我的想法:

根据4个服务->     客户服务(ui)     网关服务(Zuul)     认证服务     登录服务(提供JWT令牌的服务)     商业服务(对此服务的访问需要经过验证)

请求顺序示例:

1-从客户服务开始,登录页面上的用户提供其用户名/密码进行请求

2-网关服务接收到该请求并将其转发给登录服务(用户无需登录,因为/ login允许所有人登录)

3-登录服务从网关接收请求,如果凭据正确,则返回JWT令牌,否则抛出未经授权的异常

4-如果成功,则客户服务会获取令牌

5-客户端通过网关呼叫业务服务,并在标头中提供其JWT令牌

6-除此标头客户端外,还将生成一个私钥,该私钥将用于通过cookie生成加密的JWT令牌:             -(cookie中的私钥)<-不能通过设置一组规则被盗             -(在cookie中加密的JWT令牌)<-不能通过设置一组规则被盗             -(JWT中的x-auth-token)<-可能被盗

7-验证服务检查:         1-通过标题的JWT令牌有效(否则抛出非自动异常)         2-如果存在私钥cookie(否则抛出非自动异常)         3-如果存在JWT加密的cookie(否则抛出非自动异常)         4-用cookie 1(私钥)加密JWT令牌,然后比较加密令牌是否等于cookie 2(encrypted JWT令牌)->(否则抛出非自动抛出的异常)

8-如果用户已通过身份验证,则返回来自业务服务的响应

似乎相关?

enter image description here

0 个答案:

没有答案