苍穹单点登录第三方系统
变更记录
产品版本 | 更新内容 | 更新日期 |
V6.0.15 | 初始版本 | 2024年7月 |
1 场景
5、开发案例
以【苍穹A系统】单点登录【苍穹B系统】举例,【苍穹B系统】即为上文中的【第三方系统】
第一步:在【苍穹A系统】中创建第三方应用,见上文的[4.1]章节
第二步:构造网页认证链接,见上文的[4.2]章节
第三步:在【苍穹B系统】开发单点登录插件并部署在B系统,见上文的[4.3]章节和另一个帖子《单点登录功能介绍》
注意:插件是部署在B系统,即被单点的第三方系统,如果是异构系统,可能不是以插件的形式,具体以第三方系统集成方式为准。
单点登录插件示例代码:
public class DemoSSOAuth implements ThirdSSOAuthHandler { private static final Log logger = LogFactory.getLog(MultiTenantSSOAuth.class); @Override public void callTrdSSOLogin(HttpServletRequest servletRequest, HttpServletResponse servletResponse, String backUrl) { try { //未登录 跳转第三方登录页 地址拼接按照 String url = 认证中心的登录地址; servletResponse.sendRedirect(url); return; } catch (IOException e) { DisCardUtil.discard(); } } @Override public UserAuthResult getTrdSSOAuth(HttpServletRequest servletRequest, HttpServletResponse servletResponse) { UserAuthResult userAuthResult = new UserAuthResult(); userAuthResult.setSucess(false); try { //ssoAuthConfig.getUrl()是认证中心的访问地址 示例 https://feature.kingdee.com:1026/feature_sit //1、调用认证中心接口 获取accessToken String token = ""; String resp = HttpClientUtils.postAppJson(ssoAuthConfig.getUrl() + "/api/login.do", headerParam, body, 5 * 1000, 6 * 1000); if (StringUtils.isNotEmpty(resp)) { Map<String, Object> result = JSONUtils.cast(resp, HashMap.class, true); if (result.get("data") != null) { Map<String, Object> tokenData = (Map<String, Object>) result.get("data"); token = tokenData.get("access_token").toString(); } } //2、获取用户信息 String code = servletRequest.getParameter("code"); resp = HttpClientUtils.get(ssoAuthConfig.getUrl() + "/kapi/v2/secm/authen/getUserInfo?code=" + code + "&access_token=" + token + "&accountId=" + thirdAccountId); if (StringUtils.isNotEmpty(resp)) { Map<String, Object> result = JSONUtils.cast(resp, HashMap.class, true); if (result.get("data") != null) { Map<String, Object> data = (Map<String, Object>) result.get("data"); userAuthResult = handleUserAuthResult(userAuthResult, data, ssoAuthConfig); if (userAuthResult.getUser() == null || StringUtils.isBlank(userAuthResult.getUser().toString())) { userAuthResult.setSucess(false); return userAuthResult; } userAuthResult.setSucess(true); } } } catch (Exception e) { logger.error(e); } return userAuthResult; } /** * @param userAuthResult * @param data * @param ssoAuthConfig * @return */ private UserAuthResult handleUserAuthResult(UserAuthResult userAuthResult, Map<String, Object> data, SSOAuthConfig ssoAuthConfig) { if (StringUtils.isBlank(ssoAuthConfig.getUserFlag())) { return userAuthResult; } //1 mobile 2email 0 userName 3workNumber switch (ssoAuthConfig.getUserFlag()) { case "0": userAuthResult.setUserType(UserProperType.UserName); userAuthResult.setUser(data.get("userName")); break; case "1": userAuthResult.setUserType(UserProperType.Mobile); userAuthResult.setUser(data.get("mobile")); break; case "2": userAuthResult.setUserType(UserProperType.Email); userAuthResult.setUser(data.get("email")); break; case "3": userAuthResult.setUserType(UserProperType.WorkerNumber); userAuthResult.setUser(data.get("workNumber")); break; } return userAuthResult; } }
苍穹单点登录第三方系统
变更记录产品版本更新内容更新日期V6.0.15初始版本2024年7月1 场景苍穹提供OAuth协议的授权登录方式,通过OAuth2.0验证接口来获取成员的身...
点击下载文档
上一篇:发起群聊沟通介绍下一篇:钉钉如何跳转PC浏览器免登访问苍穹
本文2024-09-23 00:33:40发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140249.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章