跳到主要内容

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.casUrlStringcas身份服务器地址;
cas.myserviceUrlStringcas单点服务地址,设置为 {server}/orgsso
cas.serviceValidateString验证ticket路径;访问 casUrl+serviceValidate 地址进行验证ticket认证
cas.loginString登录路径; 访问 casUrl+login 地址进行授权认证
cas.logoutString登出路径; 访问 casUrl+logout cas身份服务退出授权状态
cas.casParamsObject返回用户信息字段映射规则,key为固定字段value根据实际用户信息配置;参数配置方法
cas.params.UserIdString用户唯一标识
cas.params.NameString姓名,用户已存在会覆盖
cas.params.EmailString邮箱;通过邮箱查找或者注册此字段必须设置; 邮箱或者手机号必须设置其中一个;如已经绑定第三方关系的,可通过关系查找用户,邮箱或手机可不设置
cas.params.MobileString手机号;通过手机号查找或者注册此字段必须设置;
autoRegisterBoolean当账号不存在时,是否自动创建账号;默认为 true
projectIdStringHAP 组织编号;组织管理(右上角) > 组织信息(页)>组织编号ID;(多组织单点登录不需要配置此参数,见步骤3);如 1x-2x-3x-4x-5x

创建 appextensions.json 增加cas身份服务同步退出配置,

默认路径为 /data/hap/script/volume/wwwapi/appextensions.json,内容如下:

{
"AppSettings": {
"EnableSsoLogoutRedirect": true
}
}

交互示意图

ticket

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
提示

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

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

3. 单点登录

单组织

浏览器访问: {server}/orgsso/cas?returnUrl={returnUrl}

多组织

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

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

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

备注

{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,排查具体报错原因