玩转SSO苍穹退出和钉钉集成

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

玩转SSO苍穹退出和钉钉集成




亲爱的小伙伴,你是不是也遇到了跟上面同学一样的问题呢?别急,小编这就给大家讲解这2个问题的解决方法。




1 苍穹SSO退出CAS服务器


针对“退出苍穹的同时退出CAS服务器”的客户需求,解决方案如下:

在苍穹退出后,系统会调用SSO插件的getTrdSSOAuth方法,并在该方法中返回到SSO插件中指定的登录页面。那么,我们在该方法中可以根据当前请求是退出操作,从而执行CAS server的退出操作。

相关代码如下:



public void callTrdSSOLogin(HttpServletRequest request, HttpServletResponse response, String backUrl)
  {
     String path = request.getRequestURI();
     if (path.contains("/auth/logout.do"))
     { 
      //在此处执行CAS server的退出操作
         HandleCASLogout(request);
     }
     ……
  }


2 苍穹SSO集成钉钉


为什么会存在钉钉和SSO集成的问题,而企业微信没有?


因为钉钉在获取认证Token的时候是通过前端JavaScript获取,而不是通过苍穹后台直接获取。所以,钉钉在认证时需要先跳转到苍穹移动登录页,在登录页中去实现钉钉的Token的获取,这是苍穹移动登录的默认存在逻辑。


明白了原因,问题就好解决了~在SSO认证需要跳转到CAS服务器的登录页的逻辑前,增加钉钉访问的识别,并将URL对应的参数转发到移动登录界面即可。


不多解释了,Talk is cheap。Show you the code:


public void callTrdSSOLogin(HttpServletRequest request, HttpServletResponse response, String backUrl)
  {
    String appType = request.getParameter("apptype");
    String tenantId = RevProxyUtil.getTenantCode(request);
    String server=UrlService.getDomainContextUrl(tenantId);
    if ("dd".equalsIgnoreCase(appType)) {
        //钉钉的处理逻辑
             //1,获取当前url的参数
       Enumerationenums = request.getParameterNames();
       StringBuilder sbBuilder = new StringBuilder();
       while (enums.hasMoreElements()) {
              String name = enums.nextElement();
              if (!name.equals("redirect") ){
                     if(StringUtils.isEmpty(sbBuilder.toString())){
                        sbBuilder.append("?").append(name).append("=");
                     }else{
                        sbBuilder.append("&").append(name).append("=");
                     }
                     sbBuilder.append(request.getParameter(name));
              }
       }
    }
    //2,生成返回的Url,包括查询参数
    String OriginRedirect=new StringBuilder(server).append("/mobile.html").append(sbBuilder).toString();
    //3,生成移动登录url,返回
    String redirect = new StringBuilder(server).append("/login-mobile.html?redirect=").append( URLEncoder.encode(OriginRedirect,"UTF-8")).toString();
    response.sendRedirect(redirect);
    return;
}


以上就是本期文章的全部内容。这个简单且实用的解决登录认证问题的方法,你学会了没?




更多精彩内容,“码”上了解!↓



玩转SSO苍穹退出和钉钉集成

亲爱的小伙伴,你是不是也遇到了跟上面同学一样的问题呢?别急,小编这就给大家讲解这2个问题的解决方法。1 苍穹SSO退出CAS服务器针对“退...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息