Skip to main content

Ticket

1. 创建配置文件

数据目录默认 /data/mingdao/script/volume/sso/sso.json,内容如下:

注意:如果挂载后依然出现 404 ,可将内容复制到 json.cn 中验证json格式是否合法

{
"mode": "common-ticket",
"name": "ticket",
"ticket": {
"getUidUrl": "",
"ticketParams": {
"ticketParam": "ticket"
},
"getUserInfoUrl": "",
"params": {
"UserId": "uid",
"Name": "name",
"Email": "email",
"Mobile": "mobilePhone"
},
"autoRegister": true,
"projectId": ""
}
}

部分参数及解释

参数类型是否必须解释
ticket.getUidUrlString获取用户ID接口地址;会以 Post 方式将 ticketParams 中配置的参数发送至此接口获取用户id; 接口要求
ticket.ticketParamsObjectticketParams 内可按需要添加更多自定义参数; 此参数用来获取用户id
ticket.ticketParams.ticketParamStringURL 中携带的 ticket 参数名称; 如配置为"ticketParam": "tkt" 则需要配置的地址为/ticket?tkt=xxx&....才能正确获取值
ticket.getUserInfoUrlString获取用户信息的接口地址; 接口要求
ticket.paramsObject返回用户信息字段映射规则,key为固定字段value根据实际用户信息配置;参数配置方法
autoRegisterBoolean当账号不存在时,是否自动创建账号;默认为true
projectIdStringHAP 组织编号;组织管理(右上角) > 组织信息(页)>组织编号ID;(多组织单点登录不需要配置此参数,见步骤3);如 1x-2x-3x-4x-5x

交互示意图

获取用户id的接口需要满足以下要求

  • 支持 POST (application/json)方式调用(请求体为 ticketParams 中配置的参数)

  • 返回值为 JSON 格式,且需满足如下格式:

{
"code": "1",
"message": "success",
"data": "248289761" // 用户id
}

获取用户信息的接口需要满足以下要求

  • 支持 POST (application/json)方式调用,请求参数如下
{
"userId": "248289761"
}
  • 返回值为 JSON 格式,且需满足如下格式:
{    
"code": "1",
"message": "success",
"data": {
"uid": "248289761001",
"name": "Jane Doe",
"email": "janedoe@example.com",
"mobilePhone": "123"
}
}

如以上返回值,则 params 的配置为:

"params": {
"UserId": "uid",
"Name": "name",
"Email": "email",
"Mobile": "mobilePhone"
}

2. 挂载配置文件

修改微服务应用对应的 docker-compose.yaml, 默认路径 /data/mingdao/script/docker-compose.yaml, 在 volumes 中增加文件挂载并重启微服务应用。

- ./volume/sso/sso.json:/usr/local/MDPrivateDeployment/sso/OptionFile/sso.json

如需通过第三方关系查找用户(用户是接口同步方式创建),需要创建配置文件 extend.json

默认路径 /data/mingdao/script/volume/sso/extend.json,内容如下

{
"relation": true
}

并增加挂载

- ./volume/sso/extend.json:/usr/local/MDPrivateDeployment/sso/extend.json
tip

挂载配置完成需重启微服务应用

重启成功后可通过GET方式访问 {server}/orgsso/checkssoconfig 接口,查看配置文件是否挂载成功

3. 单点登录

单组织

浏览器访问: {server}/orgsso/ticket?{ticketParams.ticketParam}={ticket}&returnUrl={returnUrl}

多组织

浏览器访问: {server}/orgsso/ticket?returnUrl={returnUrl}&appKey={appKey}&sign={sign}&timestamp={timestamp}&projectId={projectId}

对于多组织 projectId 需要通过参数传递,还需要企业授权认证参数;

企业认证授权签名算法请参考:https://www.showdoc.com.cn/mingdao/15539798

note

{server} 为 HAP 系统地址,比如可替换为:http://192.168.10.20:8880

{returnUrl} 为登录成功后的跳转地址,可不填写;比如需要跳转应用页面,则可替换为:http://192.168.10.20:8880/app/cf595091-e3ac-4669-a320-068e55533c33/64477b37df36209b5f36f1cf/64477b4f61655012a90ed994?from=insite

如果访问过程中出现的 SSO Error 提示,则可以通过管理员账号登录 HAP 系统,点击右上角头像: 系统配置>日志 ; 搜索服务名sso,排查具体报错原因