本项目基于spring-cloud-starter-oauth2搭建的认证中心和资源服务器的微服务项目,项目不仅仅简单的demo,项目的出发点在于实战应用。本项目为笔者花了不少时间和精力整理出来的,只需要稍微调整就可应用于实际项目当中,并且项目包含大量注释,不仅可以让你会用,也可让你了解到一些流程、一些原理上的东西。认证中心完成密码模式、授权码模式、刷新token模式、简化模式、以及自定义的手机号验证码模式。
项目源码获取方式:关注后转发一下,后台私信回复【源码】即可免费获取到
功能
- 密码模式- 自定义手机验证码模式- 授权码模式- 简化模式- 刷token模式- 退出测试接口- 简单授权页面- 不需要accessToken测试接口- 需要accessToken测试接口- 需要特定权限测试接口- scope测试接口
开发环境
- JDK 1.8 +
- Maven 3.5 +
- IntelliJ IDEA ULTIMATE 2018.2 + (注意:建议使用 IDEA 开发,同时保证安装 lombok 插件,如果是eclipse也要确保安装了lombok 插件)
- Redis 3.0 +
认证验证流程
这里简单做下密码模式的认证和accessToken验证流程,手机号模式跟这个类型,授权码模式和简化模式稍微有点不一样,授权码模式和简化模式都是先跳到认证中心的授权页面,授权成功后回调回调地址,并且携带参数code或accessToken。
![001cb95292048aebb8c0170cb579af56.png](https://i-blog.csdnimg.cn/blog_migrate/3a72b4484937db48bf76ca38b3664f81.jpeg)
认证中心核心代码
![8282cdad9c26b2bd8b140ea78100c4c7.png](https://i-blog.csdnimg.cn/blog_migrate/9dac773bf3efec32032ca9ebaba6f081.jpeg)
部分源代码
![1c1e2ab6c701e71e6e6dcc1ac42a03b4.png](https://i-blog.csdnimg.cn/blog_migrate/437ae07e69e90d07dc8664ef988a757f.jpeg)
postman接口测试截图
客户端Basic请求头
这里两种方式都是一样的,eWFvaHc6eWFvaHc=其实就是yaohw:yaohw,经过base64加密了一下
![0d9f10bf72ea5e8ae09d2e6b71f81813.png](https://i-blog.csdnimg.cn/blog_migrate/44244d560a4ada21948bce3bfee28e65.jpeg)
![b8cf9bfa75ea860000dd6d65bd235db0.png](https://i-blog.csdnimg.cn/blog_migrate/b24ff51d019c0ee37d5866a5b5149125.jpeg)
密码模式
![0bd833aafef46f56d9552f073bc7d792.png](https://i-blog.csdnimg.cn/blog_migrate/a3151d29f874cf3012e6740fb593ef44.jpeg)
自定义手机号验证码模式
注意:需要在redis中设置一个缓存,String类型,key为sms:code:你的手机号,值为短信验证码
![d04122789b98429dc2380ff7ac32bdc7.png](https://i-blog.csdnimg.cn/blog_migrate/07d5a3ce90dc89c895c8b695356447b4.jpeg)
![41ddb83dcbf471d21d1abb31aaba483c.png](https://i-blog.csdnimg.cn/blog_migrate/8af5a52245653163e81a479851d33512.jpeg)
授权码模式
授权码模式步骤一
授权码模式步骤一 会跳转到认证中心的授权页面,这里为方便展示参数才用postman,get请求,应在浏览器直接打开(带对应参数),授权成功后会回调回调地址,并且会携带code。
![628f53e8201453044bbcd168d6c45202.png](https://i-blog.csdnimg.cn/blog_migrate/b387ce7212032f4d1cee353534799d7e.jpeg)
授权码模式步骤二(授权页面授权)
![e4139cabddf4e60920e54cd73cef7d70.png](https://i-blog.csdnimg.cn/blog_migrate/4814f0315d0602a19bb352aa18466d2b.jpeg)
授权码模式步骤三(获取code)
![453f7a5ecaed3eb23762c3bef6d458c1.png](https://i-blog.csdnimg.cn/blog_migrate/33d16758abeb8938ccd8721652fcf5b7.jpeg)
授权码模式步骤四(根据code获取token)
![fbd1b0ce8eedd7b5a5a68bed1e5e692e.png](https://i-blog.csdnimg.cn/blog_migrate/d61c658378cefdce6055dd630d4249a3.jpeg)
简化模式
与授权码模式类似,不过回调后携带的参数不是code,还是access_token,比授权码模式少了一步.
步骤一
简化模式步骤一会跳转到认证中心的授权页面,这里为方便展示参数才用postman,get请求,应在浏览器直接打开(带对应参数),授权成功后会回调回调地址,并且会携带accessToken。
![7b42048297ac98efbe63b74a7abb3ae2.png](https://i-blog.csdnimg.cn/blog_migrate/98542eb66dd22a1f350db939698a36a5.jpeg)
步骤二(授权页面授权)
![e4139cabddf4e60920e54cd73cef7d70.png](https://i-blog.csdnimg.cn/blog_migrate/4814f0315d0602a19bb352aa18466d2b.jpeg)
步骤三
![73f4a09ef045a403829aa4f3d4bfc31b.png](https://i-blog.csdnimg.cn/blog_migrate/907ccfbb667e3528e1039af18347429e.jpeg)
刷新token模式
![8471207f8d4c37bb717089f94aa8418f.png](https://i-blog.csdnimg.cn/blog_migrate/5ed94ce793a4f8fa1954482274f2c25e.jpeg)