Spring Cloud基于Zuul的统一授权认证
使用了Spring Cloud OAuth2、Spring Cloud Security、Eureka、Zuul。实现了统一授权认证。使用JPA自动创建数据表免去导入麻烦。
使用OAuth2实现多个微服务的统一认证授权,通过向OAUTH服务发送某个类型的grant type进行集中认证和授权获得access token,这个access token是受其他微服务信任的。后续访问中可以通过这个access token来进行。
-
account: 用户微服务 xfauth: OAUTH2认证授权中心 gateway: 边界网关 eureka: 服务注册和发现
基础环境
-
开启MySql 修改xfauth配置文件bootstrap.yml中的datasource配置mysql用户名、密码、数据库名。 开启Redis 修改xfauth配置文件bootstrap.yml中的redis如果默认端口号是6379 host为 localhost则不用修改。 项目中使用了lombok如果你的IDE是Eclipse需要安装相应的插件,如果是IDEA2017版本的不用安装插件已经支持。引入lombok的方式请自行百度。
运行
-
运行eureka 端口号8888 运行gateway 端口号8088 运行xfauth(因为使用了JPA会自动创建数据表不用导入数据库,只需要开启mysql) 端口号5000 账户1: username:fpf password:fpf 账户2: username:wl password:wl 相关的设置可以在xfauth项目中的Init类中看到 运行account 端口号8083
测试 一、密码模式
-
通关zuul网关访问认证服务获取 access token 8088是网关端口
-
通过access token访问xfauth中的/userAPI获取用户信息 或者在header中添加Authorization
-
使用相同的access token访问account中的/currentAPI获取用户信息 可以看到都是相同的用户信息
-
使用access token访问account中带权限的/queryAPI 使用wl用户重新获取access token访问account中带权限的/queryAPI
-
通过wl用户的access token访问xfauth中的/userAPI获取用户信息 或者在header中添加Authorization
-
使用wl用户的access token访问account中的/currentAPI获取用户信息 可以看到都是相同的用户信息
-
使用wl用户的access token访问account中带权限的/queryAPI
二、授权码模式
-
请求
输入密码:fpf fpf
-
回调:
-
变更code,获取token
{ "access_token": "02469e49-627b-4a13-926b-ec642d283537", "token_type": "bearer", "refresh_token": "60358383-e7a1-4d88-8df1-9eab72592637", "expires_in": 43199, "scope": "webapp" }
-
通过access token访问xfauth中的/userAPI获取用户信息 或者在header中添加Authorization
-
使用相同的access token访问account中的/currentAPI获取用户信息 可以看到都是相同的用户信息
-
使用access token访问account中带权限的/queryAPI
-
请求
输入密码:wl wl
-
回调:
-
变更code,获取token
{ "access_token": "b0a81a7c-8aa7-4a4f-8337-c6f34bd47847", "token_type": "bearer", "refresh_token": "a2079994-210f-4339-bec9-89c75cb891a7", "expires_in": 43199, "scope": "webapp" }
-
通过access token访问xfauth中的/userAPI获取用户信息 或者在header中添加Authorization
-
使用相同的access token访问account中的/currentAPI获取用户信息 可以看到都是相同的用户信息
-
使用access token访问account中带权限的/queryAPI
源代码地址: 一、密码模式 链接: 提取码:uz7a 复制这段内容后打开百度网盘手机App,操作更方便哦 二、密码模式+授权码模式 链接: 提取码:kdm6 复制这段内容后打开百度网盘手机App,操作更方便哦
三、SQL文件地址: 链接: 提取码:upd0 复制这段内容后打开百度网盘手机App,操作更方便哦