CAS
1. 创建配置文件
创建
sso.json默认路径为/data/hap/script/volume/sso/sso.json,内容如下:
注意:如果挂载后依然出现 404 ,可将内容复制到 json.cn 中验证 json 格式是否合法
{
"mode": "common-cas",
"name": "cas",
"cas": {
"casUrl": "",
"myserviceUrl": "",
"serviceValidate": "/serviceValidate",
"login": "/login",
"logout": "/logout",
"casParams": {
"UserId": "{{&user}}",
"Name": "{{&attributes.name}}",
"Email": "{{&user}}@test.com"
},
"autoRegister": true,
"projectId": ""
}
}
部分参数及解释
| 参数 | 类型 | 是否必须 | 含义 |
|---|---|---|---|
| cas.casUrl | String | 是 | cas 身份服务器地址; |
| cas.myserviceUrl | String | 是 | cas 单点服务地址,设置为 {HAP}/orgsso |
| cas.serviceValidate | String | 是 | 验证 ticket 路径;访问 casUrl+serviceValidate 地址进行验证 ticket 认证 |
| cas.login | String | 是 | 登录路径; 访问 casUrl+login 地址进行授权认证 |
| cas.logout | String | 是 | 登出路径; 访问 casUrl+logout cas 身份服务退出授权状态 |
| cas.casParams | Object | 是 | 返回用户信息字段映射规则,key 为固定字段 value 根据实际用户信息配置;参数配置方法 |
| cas.params.UserId | String | 是 | 用户唯一标识 |
| cas.params.Name | String | 否 | 姓名,用户已存在会覆盖 |
| cas.params.Email | String | 否 | 邮箱;通过邮箱查找或者注册此字段必须设置; 邮箱或者手机号必须设置其中一个;如已经绑定第三方关系的,可通过关系查找用户,邮箱或手机可不设置 |
| cas.params.Mobile | String | 否 | 手机号;通过手机号查找或者注册此字段必须设置; |
| cas.params.SystemLanguage | String | 否 | 登录后的系统语言,目前支持 zh-Hans、en、ja、zh-Hant,默认为 zh-Hans |
| autoRegister | Boolean | 否 | 当账号不存在时,是否自动创建账号;默认为 true |
| projectId | String | 是 | HAP 组织编号;组织管理(右上角) > 组织信息(页)>组织编号 ID;(多组织单点登录不需要配置此参数,见步骤 3);如 1x-2x-3x-4x-5x |
创建
appextensions.json增加 cas 身份服务同步退出配置,默认路径为
/data/hap/script/volume/wwwapi/appextensions.json,内容如下:
{
"AppSettings": {
"EnableSsoLogoutRedirect": true
}
}
交互示意图

cas 返回用户信息结果必须为 xml 格式,其他格式不支持,根据 cas 返回结果设置 casParams 中的映射字段,如:
<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
<cas:authenticationSuccess>
<cas:user>test</cas:user>
<cas:attributes>
<cas:name>Jack</cas:name>
</cas:attributes>
</cas:authenticationSuccess>
</cas:serviceResponse>
根据以上👆返回,则 casParams 的配置为:
"casParams": {
"UserId": "{{&user}}",
"Name": "{{&attributes.name}}",
"Email": "{{&user}}@test.com"
}
2. 挂载配置文件
修改微服务应用对应的
docker-compose.yaml, 默认路径/data/hap/script/docker-compose.yaml, 在volumes中增加文件挂载并重启微服务应用
- ./volume/sso/sso.json:/usr/local/MDPrivateDeployment/sso/OptionFile/sso.json
- ./volume/wwwapi/appextensions.json:/usr/local/MDPrivateDeployment/wwwapi/appextensions.json
开启关系查找
如需要绑定第三方关联ID,则需要创建文件
extend.json默认路径/data/hap/script/volume/sso/extend.json内容如下
{
"relation": true
}
增加挂载文件
- ./volume/sso/extend.json:/usr/local/MDPrivateDeployment/sso/extend.json