# 认证中心服务手册


理论所有服务皆为资源服务,后台提供基础资源服务模版下载 地址:http://git.tq-service.com/architecture/ts-service-resource-demo 资源服务默认环境:

  • JDK1.8
  • idea 推荐 2018.3.*版本
  • Maven 3.* 资源服务默认接入以下服务:
  • nacos配置中心
  • nacos服务注册
  • sentinel流控
  • oauth认证
  • actuator健康检查
  • 原生支持无状态扩展

# 要求

  1. 不允许在资源服务中开发定时任务,所有定时任务必须接入xxljob
  2. 配置系统配置存放在本地配置文件中,动态刷新配置统一在配置中心新建项目配置文件并引用

# 服务支持

# 认证中心获取token方式

接口地址:https://gateway-test.tq-service.com/uaa-center/oauth/token

参数 类型 是否必填 备注
grant_type String password,client_credentials
username String 帐号
password String 因为前端有加密,所以直接调用接口需要将密码进行一次rsa加密
client_id String password:是,client_credentials:否 客户端账户 ,管理后台拷贝
client_secret String password:是,client_credentials:否 客户端密码,管理后台拷贝

# 认证中心Knife4j接口文档接入

1. 第一步
工程接入ts-module-swagger包

2. 第二步
在Nacos配置文件gateway-swagger.yaml中新增需要加入文档系统扫描的服务名称
- 项目名称 # 项目名称必须跟网关中(gateway-router.json  route.id)一致,后台会根据网关route.ID 进行匹配过滤

3. 第三步
给对应人员在功能菜单权限打开【开发工具】菜单权限

4. 第四步
在认证中心后台 -》资源权限管理-》文档管理权限进行项目文档全选配置


# 认证中心接口接入

  1. HTTP接入
  • 调用认证中心接口需在参数携带access_token,认证中心根据token判断用户权限信息。
  • access_token在用户登录成功后,通过SecurityContextHolder.getContext().getAuthentication()中获取到Authentication认证信息, Authentication认证中包含用户token。
  • 如果没有用户登录行为的接口调用
    1. 使用后台分配帐号密码
    2. 通过调用认证中心获取token接口,获得access_token
    3. 调用需认证服务接口
  1. SDK接入(待开发)
  • SDK接入通过配置ID和key即可实现对相关服务的调用认证

# 数据权限

  • 数据权限通过角色所属组织实现数据范围权限过滤,登录成功后获取的用户信息包含用户角色信息,通过用户角色信息可以获 取用户组织权限范围,实现范围数据过滤
  • 角色分为普通角色和管理员角色,管理员角色可以一对多对应多个组织范围,普通角色一对一,一个角色对应一个组织

# 客户端模式

  1. 获取认证token接口
  • 接口地址(测试):https://gateway-test.tq-service.com/uaa-center/oauth/token
  • 请求方式:POST
    参数 类型 备注
    grant_type String client_credentials
    client_id String 客户端ID
    client_secret String 客户端密码
  • 返回结果:
 {
 	"access_token": "672849b1-5260-49d6-be52-0408bd320f00",
 	"token_type": "bearer",
 	"expires_in": 64799,
 	"scope": "read write"
 }
  1. 获取用户信息接口
  • 接口地址(测试):https://gateway-test.tq-service.com/uaa-center/user
  • 请求方式:POST
    参数 类型 备注
    userId String 登录账户 如:xiangjx
    access_token String 认证token
       {
       	"code": 200,
       	"requestId": "2a0e3446-0e4c-435d-8a06-969deb6be43a",
       	"data": {
       		"user": {
       			"userId": "3ae2f45fe1784e48b03f23dabf730c7e",
       			"loginId": "xiangjx",
       			"password": "",
       			"passwordDefaultNum": 0,
       			"pwdLastModifyDate": null,
       			"isLock": "0",
       			"orderNo": 108391,
       			"username": "向建新",
       			"sex": "0",
       			"idCardType": null,
       			"idCardNo": null,
       			"mobile": null,
       			"createUser": "1",
       			"createTime": "2020-12-23 00:00:00",
       			"modifyTime": null,
       			"accountSource": null,
       			"effective": "1",
       			"effectiveTime": null,
       			"jobnumber": null,
       			"state": null,
       			"birthPlace": null,
       			"address": null,
       			"zipCode": null,
       			"email": null,
       			"phone": null,
       			"education": null,
       			"graduateSchool": null,
       			"workPlace": null,
       			"field01": null,
       			"field02": null,
       			"field03": null,
       			"field04": null,
       			"field05": null,
       			"field06": null,
       			"field07": null,
       			"field08": null,
       			"field09": null,
       			"field10": null,
       			"orgId": "c588f0b0d75141d6be2352b54633e2e9",
       			"orgName": "测试组",
       			"spell": "CSZ",
       			"parentId": "fd811ab9c30440088df3e29ea784460a",
       			"idPath": "fd811ab9c30440088df3e29ea784460a,c588f0b0d75141d6be2352b54633e2e9",
       			"namePath": "金科服务集团,测试组",
       			"customNo": "CS",
       			"orgOrderNo": 30,
       			"orgLevel": 1,
       			"areaId": "8fd94837081945249b84dbbf3a0399c9",
       			"orgType": "02",
       			"orgCreateUser": "1",
       			"orgCreateTime": "2019-07-23 00:00:00",
       			"orgModifyTime": "2019-07-23 00:00:00",
       			"orgManager": "0979fc26b7714930a0eb74850fa391db",
       			"orgCode": "CS",
       			"contacts": "0979fc26b7714930a0eb74850fa391db",
       			"orgAddress": "",
       			"tel": "",
       			"areaName": null,
       			"areaCode": null,
       			"areaNamePath": null,
       			"areaLevel": null,
       			"areaSpell": null,
       			"areaOrder": null,
       			"parentAreaId": null,
       			"areaIdPath": null,
       			"mainRoleId": "18aa346a1132459895d0709a0bae20d0",
       			"roles": [{
       				"roleId": "18aa346a1132459895d0709a0bae20d0",
       				"roleName": "测试角色",
       				"orgId": "c588f0b0d75141d6be2352b54633e2e9",
       				"roleType": "01",
       				"effective": "1",
       				"effectiveTime": null,
       				"createUser": "1",
       				"createTime": "2021-01-04 00:00:00",
       				"defaultRole": "0",
       				"createUserName": null,
       				"idPath": null,
       				"namePath": null,
       				"roleSign": null,
       				"roleDesc": null,
       				"subordinate": null,
       				"roleMark": null,
       				"authority": "ROLE_18aa346a1132459895d0709a0bae20d0",
       				"attribute": "ROLE_18aa346a1132459895d0709a0bae20d0"
       			}],
       			"orgInfo": null,
       			"name": "向建新"
       		}
       	},
       	"errors": null,
       	"serviceSuccess": true,
       	"redirectUrl": null
       }
  1. 将信息写入session
HttpSession session = request.getSession();
UserAccountVo vo = 通过接口获取用户信息转换为对象
//将登录信息放入session
session.setAttribute(ISecurityConstants.USER_INFO,vo);
最后更新日期: 3/22/2022, 8:46:23 AM