开发者社区> 问答> 正文

如何运用JWT机制实现认证?

如何运用JWT机制实现认证?

展开
收起
芯在这 2022-03-15 16:50:38 6511 0
1 条回答
写回答
取消 提交回答
    1. 登录

    第一次认证:第一次登录,用户从浏览器输入用户名/密码,提交后到服务器的登录处理的Action层(Login Action);

    Login Action调用认证服务进行用户名密码认证,如果认证通过,Login Action层调用用户信息服务获取用户信息(包括完整的用户信息及对应权限信息);

    返回用户信息后,Login Action从配置文件中获取Token签名生成的秘钥信息,进行Token的生成;

    生成Token的过程中可以调用第三方的JWT Lib生成签名后的JWT数据;

    完成JWT数据签名后,将其设置到COOKIE对象中,并重定向到首页,完成登录过程;

    1. 请求认证

    基于Token的认证机制会在每一次请求中都带上完成签名的Token信息,这个Token信息可能在COOKIE中,也可能在HTTP的Authorization头中;

    客户端(APP客户端或浏览器)通过GET或POST请求访问资源(页面或调用API);

    认证服务作为一个Middleware HOOK 对请求进行拦截,首先在cookie中查找Token信息,如果没有找到,则在HTTP Authorization Head中查找;

    如果找到Token信息,则根据配置文件中的签名加密秘钥,调用JWT Lib对Token信息进行解密和解码;

    完成解码并验证签名通过后,对Token中的exp、nbf、aud等信息进行验证;

    全部通过后,根据获取的用户的角色权限信息,进行对请求的资源的权限逻辑判断;

    如果权限逻辑判断通过则通过Response对象返回;否则则返回HTTP 401;

    2022-03-15 16:51:29
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载