使用JWT和Spring Security保护REST API,重拾后端之Spring Boot
通常情况下,把API直接暴露出去是风险很大的,不说别的,直接被机器***就喝一壶的。那么一般来说,对API要划分出一定的权限级别,然后做一个用户的鉴权,依据鉴权结果给予用户开放对应的API。目前,比较主流的方案有几种: 用户名和密码鉴权,使用Session保存用户鉴权结果。 使用OAuth进行鉴权(其实OAuth也是一种基于Token的鉴权,只是没有规定Token的生成方式) 自行采用Token进行鉴权 第一种就不介绍了,由于依赖Session来维护状态,也不太适合移动时代,新的项目就不要采用了。第二种OAuth的方案和JWT都是基于Token的,但OAuth其实对于不做开放平台的公司有些过于复杂。我们主要介绍第三种:JWT。 什么是JWT? JWT是 Json Web Token 的缩写。它是基于 RFC 7519 标准定义的一种可以安全传输的 小巧 和 自包含 的JSON对象。由于数据是使用数字签名的,所以是可信任的和安全的。JWT可以使用HMAC算法对secret进行加密或者使用RSA的公钥私钥对来进行签名。 JWT的工作流程 下面是一个JWT的工作流程图。模拟一下实际的流程是这样的(假设受保护的API在/protected中) 用户导航到登录页,输入用户名、密码,进行登录 服务器验证登录鉴权,如果改用户合法,根据用户的信息和服务器的规则生成JWT Token