信鸿登录
概述
该方案适用于信鸿轻应用中使用ticket转换盘古token的所有场景,转换为盘古token后即可访问后端(盘古脚手架搭建)需要认证的接口。
适用范围
Pangea v2.9.0+
总体方案介绍
该方案总体分为两步, 1、信鸿轻应用中可以获取ticket(ticket获取方式请咨询信鸿相关人员),通过信鸿提供的接口可以将ticket转化为用户信息(盘古将提供组件支持)。 2、获取用户信息之后请求盘古提供的用户信息转化token接口,即可获取盘古token。 盘古token有效期为12小时,建议相关人员将token缓存,严禁高频率请求token转换接口。
快速上手
一、ticket换取用户信息
在业务模块的pom
文件中添加依赖
html
<!--信鸿服务组件 -->
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-common-hichat</artifactId>
<version>${pangea.version}</version>
</dependency>
添加好依赖后使用组件中提供的HiChatTicketService服务将ticket转化为用户信息,如下代码
java
@Autowired
private HiChatTicketService hiChatTicketService;
public String ticketToUsrInfo()throws Exception{
String appid = "xxxxx"; //信鸿提供
String appSecret = "xxxxxx"; //信鸿提供
String ticket = "xxxxxxxxx"; //信鸿提供
HiChatUserInfoDTO userInfo = hiChatTicketService.getUserContextByTickeNoAccessToken(ticket,appid, appSecret);
if(Objects.isNull(userInfo)){
throw new Exception("ticket 换取用户信息失败");
}
//DOTO 用户信息存在于HiChatUserInfoDTO中
......
}
二、用户信息换取token
第一步获取用户信息后,将账号作为参数请求getPangeaTokenByLdap接口获取token。
接口请求地址
公共开发环境: http://pangea-stage-gateway-pangea-stage.devapps.hisense.com/auth/token/getPangeaTokenByLdap
其余环境: http://网关地址/auth/token/getPangeaTokenByLdap
API详解
接口说明
- 请求路径:/token/getPangeaTokenByLdap
- 请求类型:POST
接口参数
参数名称 | 参数名称 | 是否必填 | 参数类型 | 来源 |
---|---|---|---|---|
value | Ldap账号 | 是 | String | HiChatTicketService服务返回的用户信息 |
systemName | 系统名称 | 是 | String | 常量,应与前端请求header中的systemName一致 |
请求参数demo: |
{
"value":"zhangsan",
"systemName":"pangea"
}
返回结果
参数名称 | 参数名称 | 是否必填 | 参数类型 |
---|---|---|---|
ts | 时间戳 | String | |
data | token信息 | String | |
code | 返回码 | String | |
msg | 提示信息 | String | |
data中的token信息: |
参数名称 | 参数名称 | 是否必填 | 参数类型 |
---|---|---|---|
access_token | token | String | |
token_type | token类型 | String | |
refresh_token | 刷新token | String | |
expires_in | 有效期(秒) | String | |
返回结果示例: |
{
"ts": 1650959977025,
"data": {
"access_token": "ea29a0eb-64b4-4de6-952d-09fa9f00a7ac",
"token_type": "bearer",
"refresh_token": "833fb2c0-450d-451f-baab-16ac8d67fd97",
"expires_in": 37728,
},
"code": "0",
"msg": "操作成功",
"alert": "0"
}
完整demo如下:
java
public static void userInfoToPangeaToken(){
Map<String, String> params = new HashMap<>();
params.put("value","zhangsan");
params.put("systemName","pangea");
HttpEntity<MultiValueMap> requestEntity = new HttpEntity(params);
RestTemplate restTemplate = new RestTemplate;
String response = restTemplate.postForEntity("http://*****/getPangeaTokenByLdap", requestEntity,String.class);
......
}
至此,成功获取盘古颁发的token。
INFO
用于获取token的用户信息,需要存在于Ldap体系中,接口中会验证该用户是否是ldap用户。否则不予返回token。