快捷搜索: 王者荣耀 脱发

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,操作更方便哦

经验分享 程序员 微信小程序 职场和发展