## 概念 * Secure安全框架 基于 JWT 封装,每次接收到请求,会拦截到需要鉴权的API信息,并对其请求头携带的Token进行认证。 * 若 Token 过期、不存在、错误,都会导致鉴权失败,继而无法访问到对应的API。 * BladeX 的安全框架 Secure 在[BladeX-Tool](https://git.bladex.vip/blade/BladeX-Tool) 中,有兴趣的小伙伴可以阅读下源码,查看实现原理。 ## 如何通过认证 1. 当我们调用一个受保护的API,会发现返回鉴权失败 ![](../../images/screenshot_1579269072560.png) 2. 想要通过认证,首先需要访问Auth接口,传入账号名密码,获得授权成功后的令牌信息,再组装后传入请求,这样就会通过认证了。 3. 启动`AuthApplication`、`UserApplication`、 `LogApplication`、 `SystemApplication`四个服务(若使用BladeX-Boot则只需启动一个核心Application即可) ![](../../images/screenshot_1579269619026.png) 4. 调用 [http://localhost/blade-auth/oauth/token](http://localhost/blade-auth/oauth/token) 传入对应参数,如下图所示则说明认证信息获取成功。上一章节已经详细讲到Oauth2,若还没有了解请前往5.1章节再次查阅,我们先快速调用查看效果,具体调用方式请看:[https://sns.bladex.vip/article-14982.html](https://sns.bladex.vip/article-14982.html) ![](../../images/screenshot_1574305684211.png) ![](../../images/screenshot_1584617184986.png) ![](../../images/screenshot_1584617205489.png) 5. 从返回的Json中取到 `tokenType` 和 `accessToken`,将他们拼接起来并以逗号隔开 6. 设置请求头为`Blade-Auth`,请求头对应的值为 `tokenType` + `' '` + `accessToken` 7. 设置请求头为 `Authorization` 值为 `Basic c3dvcmQ6c3dvcmRfc2VjcmV0`,这个后续章节会提到。 8. 再次调用 [http://localhost/blade-demo/api/info?name=Chill](http://localhost/blade-demo/api/info?name=Chill) 发现返回 `Hello, My Name Is: Chill` 说明鉴权成功! ![](../../images/screenshot_1579269992927.png) 9. 理论上看,所有业务API,都需要进行鉴权,这样才能保证整个系统的安全性,但也有个别特例情况,API 不需要认证也可以调用,这里就需要用到 Secure 的 API 放行配置。 10. 有些业务 API 鉴权就算成功,也有可能需要根据角色权限来判断是否可以调用,这里就需要用到 Secure更细颗粒度的鉴权配置。