单点登录开发指南

变更记录
产品版本 | 更新内容 | 更新日期 |
| v3.0 | 初始版本 | |
| V6.0.2 | 增加isNeedSSOAuth4UserChange方法,支持同一个浏览器在不退出苍穹A账号的情况下切换登录B账号 | 2023年12月 |
1 场景
通过企业的统一认证中心的身份认证登录访问金蝶云苍穹系统,实现第三方系统单点登录苍穹系统。
2 适用版本
金蝶云苍穹V3.0.001 及以上
3 功能介绍
3.1 单点登录介绍
单点登录(Single Sign-On,简称SSO)是一种身份验证和授权机制,它允许用户使用一套账号密码登录访问多个相互信任的系统,实现对内部多个系统的统一访问控制,提高员工的工作效率和系统的安全性,降低企业管理和维护的成本。
3.1.1 实现机制
1)当用户第一次访问应用系统(金蝶云苍穹)的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,返回给用户一个认证的凭据。
2)用户从认证系统跳转到应用系统的时候,就会将这个认证的凭据带上,应用系统接受到请求之后会把认证的凭据通过接口传输给认证系统进行校验,检查认证的凭据的合法性。如果通过校验,用户就可以开始访问应用系统。

3.1.2 实现条件
实现SSO,需要以下主要的功能:
认证系统:用户进行登录认证;认证成功后,认证系统生成统一的认证凭据,返还给用户;认证系统对认证凭据进行校验,判断其有效性。
应用系统:通过与认证系统的对接,将用户的认证凭据传输到认证系统进行认证,从而实现对认证凭据进行识别和获取用户信息,返回认证结果从而完成单点登录的功能。
SSO插件:现场二开编写插件实现上述应用系统对接认证系统的功能,开发文档参考单点登录插件开发说明。
3.2 单点登录插件开发说明
SSO插件开发,实现kd.bos.login.thirdauth.ThirdSSOAuthHandler接口,重写 ThirdSSOAuthHandler接口的如下方法
callTrdSSOLogin方法实现用户没有登录的时候跳转认证中心的登录地址
getTrdSSOAuth实现苍穹调用认证系统的接口解析认证凭据返回用户信息,按数据格式返回认证结果
isNeedSSOAuth4UserChange实现同一个浏览器在不退出苍穹A账号的情况下切换登录B账号(此方法非必须,按需使用)
备注:代码开发工程需要引用bos-login -1.0.jar
3.2.1 重写 callTrdSSOLogin方法
功能说明:该方法是用户没有登录的时候,需要跳转到认证中心的登录地址
示例:
/**
*该方法是用户没有登录的时候,需要跳转到认证中心的登录地址
*/
@Override
public void callTrdSSOLogin(HttpServletRequest request, HttpServletResponse response, String backUrl) {
//认证中心的登录地址
String loginUrl = “http://loginip/login.html;
response.sendRedirect(loginUrl);
}参数 | 参数说明 |
request | 当前访问的HttpServletRequest对象 |
response | 当前访问的HttpServletResponse对象 |
backUrl | 回调地址,二开无需处理 |
参数说明
3.2.2 重写 getTrdSSOAuth方法
功能说明:实现苍穹调用认证系统的接口解析认证凭据返回用户信息,按数据格式返回认证结果
示例:
/**
* 实现苍穹调用认证系统的接口解析认证凭据返回用户信息,按数据格式返回认证结果
*/
@Override
public UserAuthResult getTrdSSOAuth(HttpServletRequest request, HttpServletResponse response) {
//返回的认证结果
UserAuthResult result=new UserAuthResult();
result.setSucess(false);
//二开需自行实现下面逻辑,将用户的认证凭据传输到认证系统进行认证,从而实现对认证凭据进行识别和获取用户信息,request包含请求的认证凭据
String phone=SSODemo.getLoginPhone(request);//此逻辑需二开实现
单点登录开发指南
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



