轻松搞定苍穹单点登录

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

轻松搞定苍穹单点登录


1 业务场景介绍


单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,用户在一个系统中退出登录,其他系统也同样会退出登录。听上去是不是有点抽象而又神奇,举个栗子你就明白了。


  1. 你开了家公司,前几年因为人少钱少,上了一套简单OA系统也够用,员工输入用户名密码就可以登录了;


  2. 后面几年公司逐渐成长了集团型企业。业务系统一个接一个的上,搞下来A、B、C、D…十几套系统,员工登入每个系统也都要输入账号密码,十分繁琐。这个时候,你想:能不能在一个系统输入账号密码就可以登录所有系统?


  3.  SSO单点登录应运而生,所有新技术的变革都是为因为人类想偷懒而产生的。


2 单点登录原理


下图为CAS Client和CAS Server认证过程原理图



3 苍穹实践方案


为实现苍穹和CAS Server之间的认证,我们开发了专门的SSO插件机制。目前常用的单点登录系统为耶鲁大学开发的Yale CAS,下面咱们就以Yale CAS Server为认证中心服务器举例,为大家讲述如何完成苍穹和CAS server的单点认证服务配置。


1、首先我们需要将SSO二开插件压缩包放到苍穹补丁仓库的客户目录下:


(二开插件压缩包链接: https://pan.yunzhijia.com/s/MTE5NzAwMiwwZmIw#/)



2、进入MC(苍穹管理中心)中对应的数据中心配置页面,配置二开插件。


路径:租户列表-租户-数据中心,在数据中心中,将登陆类型勾选上“第三方认证”,认证插件值为:kd.bos.login.cas.sso.Cas10SSO



3、将CAS Server证书(由企业CAS负责人制作)导入到苍穹的jdk,具体操作如下,


在cmd(win+R)输入以下命令:


keytool -import -keystore F:\jdk1.8\jre\lib\security\cacerts -file E:/keys/kdtest.crt -alias kdtest


初始密码:changeit


F:\jdk1.8为javahome,kdtest.crt为证书的名称


4、在公共配置方案页面下,找到login.properties目录下,配置CAS server地址。


名称和编码固定:cas.sso.ca10.loginurl ,值填写cas server的访问地址,例如下图中的https://www.kdtest.com:8443/cas



4 其他场景


在很多客户的应用场景中,客户已经拥有自己的单点登录服务器,同时在登录时有自己的特殊控制逻辑,这时候就可以参照以下步骤二开处理:


1、实现kd.bos.login.thirdauth.ThirdSSOAuthHandler接口,编写自己SSO登录插件


注意:实现ThirdSSOAuthHandler接口的包括3个方法:登录页面的跳转、登录返回、登录退出。具体例子如下:


Package demo;
Import javax.servlet.http. HttpServletRequest;
Import javax.servlet.http. HttpServletResponse;
Import kd.bos.login.thirdauth.ThirdSSOAuthHandler;
Import kd.bos.login.thirdauth.ThirdSSOAuthHandler
Public class DEMOSSO implements ThirdSSOAuthHandler {
    /**
 *该方法是用户没有登录的时候插件需要转移到正确的登录地址
 */
    public void callTrdSSOLogin(HttpServletRequest request, HttpServletResponse response, String backUrl) {
        //用户需要登录的地址
        String loginUrl = “http://loginip/login.html;   
        try {
            response.sendRedirect(loginUrl);
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}
/**
 * 该方法实现第三发插件认证及认证结果的返回
 */
@Override
public UserAuthResult getTrdSSOAuth(HttpServletRequest request, HttpServletResponse response) {
    // TODO Auto-generated method stub
    UserAuthResult result=new UserAuthResult();
    result.setSucess(false);
    //这里编写自己的登录逻辑,判断是否登陆成功,并填写正确的返回类型和返回值
    String phone=SSOPluginsUtil.getLoginPhone(request);
    If(phone!=null){
        //当前返回类型手机,用户名,email,工号
        result.setUserType(UserProperType.Mobile);
        result.setUser(phone);
        result.setSucess(true);
    }
    return result;
}
/** 
* SSO 登出逻辑,退出成功,返回true,不需要在sso插件中处理可以不用实现 
*/
Boolean processLogoutLogic(HttpServletRequest servletRequest){
}


2、在公共配置方案页面下,找到login.properties目录下,配置CAS server地址。

名称和编码固定:cas.sso.ca10.loginurl ,值填写cas server的访问地址,例如下图中的
https://www.kdtest.com:8443/cas(即重复步骤三中的4)





轻松搞定苍穹单点登录

1 业务场景介绍单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息