单点登录
单点登录
提供标准单点登录接口。员工在企业办公系统门户上登录后,通过该接口跳转到华为云数字化差旅时可实现免登录预定操作。消息流程如下:
接口URL
生产环境: https://openapi.hwht.com/napi/auth/url/login
测试环境: https://openapi-uat.hwht.com/napi/auth/url/login
以GET请方式调用。对应HttpBody中参数通过url传递,具体参数如下:
输入参数
参数名 | 参数说明 | 必选 | 参数类型 | 长度 | 值举例 | 备注 |
---|---|---|---|---|---|---|
msgId | 消息id | Y | String | 128 | 1000120150511190411000001 | 企业编码+消息方向+YYYYMMDDHHMMSS+NNNNNN |
corpCode | 企业账号 | N | String | 1000 | 企业账号 传入时登录到对应企业;未传入时根据tenantUserId在所对接的租户下匹配用户,当tenantUserId在租户下多家企业任职时,enterpriseTrId和orderId参数不生效 | |
tenantUserId | 租户用户id | Y | String | HW_000001 | 租户用户id | |
enterpriseTrId | 企业客户系统的审批单编号 | N | String | TA0315012116281300028 | 客户审批系统的审批单号。传空时根据travelType跳转至因公因私。 | |
lang | 语种 | N | String | CN:中文(默认),EN:英文 | **目前对外仅提供中文版。**该字段不提供则默认跳转到中文页面 | |
serviceType | 服务类型 | N | String | HOME:首页,FLIGHT_BOOKING:机票预订,HOTEL_BOOKING:酒店预订,PERSON_CENTER:个人中心,ORDER_CENTER:订单中心,INTER_FLIGHT_BOOKING:国际机票预订,INTER_HOTEL_BOOKING:国际酒店预订,TRAIN_BOOKING:国内火车票预订,HOTEL_AFTER_BOOKING:离店确认,ORDER_DETAIL:订单详情,CAR_BOOKING:用车预订,TMC:预订管控配置 | 传空时默认进入首页 | |
orderId | 订单Id | N | String | F:机票,H:酒店,T:火车票,I:国际机票,G:国际酒店 | 根据订单Id的前缀跳转到对应订单详情 | |
travelType | 出行方式 | N | String | BUSINESS:因公出行,PRIVATE:因私出行 | 传空时员工自行在系统选择因公或因私出行;仅预定页面有效 | |
source | 来源 | N | String | 登录来源type(自定义) | ||
redirectUrl | 重定向地址 | N | String | 仅支持站内地址重定向 | 当redirectUrl有值时,优先跳转redirectUrl;为空则按serviceType参数进行跳转 | |
redirectSite | 跳转站点类型 | N | String | PC:PC端,H5:H5端 | 传空时默认为PC |
构造请求
单点登录是GET请求,所以技术要点中放在消息头中Authorization的参数通过url传递。
待签名的字符串中 CanonicalQueryString 取输入参数中字段和值,url中查询参数先拼接CanonicalQueryString的值,参数顺序需要保持和url中一致,之后拼接Authorization的参数。
举例说明:
- 原始请求url
https://openapi.hwht.com/napi/auth/url/login?msgId=0008120240617143030100010&corpCode=0008&tenantUserId=test0001&lang=CN&serviceType=FLIGHT_BOOKING&travelType=BUSINESS&source=default&redirectSite=PC
- 认证秘钥
secretKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
accessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
- 待签名字符串
GET + '\n ' +
/napi/auth/url/login + '\n' +
20241106T094914Z + '\n ' +
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + '\n' +
msgId=0008120240617143030100010&corpCode=0008&tenantUserId=test0001&lang=CN&serviceType=FLIGHT_BOOKING&travelType=BUSINESS&source=default&redirectSite=PC + '\n'
- 得到签名signature
e14f72eb3be2fe07178ac27240b8c789b5742ada41f8cbf04bdf34629bfdbec5
- 最终实际请求url
https://openapi.hwht.com/napi/auth/url/login?msgId=0008120240617143030100010&corpCode=0008&tenantUserId=test0001&lang=CN&serviceType=FLIGHT_BOOKING&travelType=BUSINESS&source=default&redirectSite=PC&type=AKSK-HMAC-SHA256&authId=xyz&accessKey=B4rmSF2by5EPE8t3SY6rcmidtbdXhzCd&date=20241106T094914Z&signature=e14f72eb3be2fe07178ac27240b8c789b5742ada41f8cbf04bdf34629bfdbec5