在往期「译见」系列的文章中,我们已经建立了业务逻辑、数据访问层和前端控制器,但是忽略了对身份进行验证。随着SpringSecurity成为实际意义上的标准,将会在在构建Javaweb应用程序的身份验证和授权时使用到它。在构建用户管理微服务系列的第五部分中,将带您探索SpringSecurity是如何同JWT令牌一起使用的。
有关Token
船长导语
诸如Facebook,Github,Twitter等大型网站都在使用基于Token的身份验证。相比传统的身份验证方法,Token的扩展性更强,也更安全,非常适合用在Web应用或者移动应用上。我们将Token翻译成令牌,也就意味着,你能依靠这个令牌去通过一些关卡,来实现验证。实施Token验证的方法很多,JWT就是相关标准方法中的一种。
“
关于JWT令牌
JSONWebTOKEN(JWT)是一个开放的标准(RFC),它定义了一种简洁且独立的方式,让在各方之间的JSON对象安全地传输信息。而经过数字签名的信息也可以被验证和信任。
JWT的应用越来越广泛,而因为它是轻量级的,你也不需要有一个用来验证令牌的认证服务器。与OAuth相比,这有利有弊。如果JWT令牌被截获,它可以用来模拟用户,也无法防范使用这个被截获的令牌继续进行身份验证。
真正的JWT令牌看起来像下面这样:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJsYXN6bG9fQVRfc3ByaW5ndW5pX0RPVF9jb20iLCJuYW1lIjoiTMOhc3psw7MgQ3NvbnRvcyIsImFkbWluIjp0cnVlfQ.XEfFHwFGK0daC80EFZBB5ki2CwrOb7clGRGlzchAD84JWT令牌的第一部分是令牌的header,用于标识令牌的类型和对令牌进行签名的算法。
{"alg":"HS","typ":"JWT"}第二部分是JWT令牌的payload或它的声明。这两者是有区别的。Payload可以是任意一组数据,它甚至可以是明文或其他(嵌入JWT)的数据。而声明则是一组标准的字段。
{"sub":"laszlo_AT_springuni_DOT_治疗白癜风小偏方专治白癜风医院