
hello好久没更新了近期公司信息化改革都在搞用友的YonSuite。近几天搞了下YonSuite单点登录用于内部工作使用简单讲解下吧。目录单点登录流程BIP/YonSuite均适用单点登录开发单点登录流程BIP/YonSuite均适用简而言之思路就是三部曲1、获取接口tokenYonSuite内部调用时可跳过2、获取验证中心一次性code需要传入系统用户唯一标识3、通过一次性code拼接地址跳转友互通验证登录原地址在这单点登录开发这边开发我是采用了api的方式按照以上思路我们先来看下“验证中心一次性code”的接口字段说明thirdUcId是集成认证中心页面开放userId是用户唯一标识就可以一般可以传入手机号开发代码代码实例只供用友内部调用原单点登录地址有外部JAVA实例letAbstractAPIHandlerrequire(AbstractAPIHandler);classMyAPIHandlerextendsAbstractAPIHandler{execute(request){try{//手机号varmobilerequest.mobile;if(nullmobile||mobile.length0){throw手机号为空;}mobilemobile.replace(86-,);//集成中心编码varthirdUcIdxxxx;//租户IDvartenantIdxxxx;//跳转URLvartargetUrlhttps://xxxx.yonyoucloud.com;//登录页URLvarloginUrlhttps://xxxx.yonyoucloud.com/login;//请求参数varrequestParam{thirdUcId:thirdUcId,userId:mobile,mobile:mobile};//集成认证中心获取登录临时codeletresultopenLinker(POST,ObjectStore.env().url/iuap-api-gateway/yonbip/yht/getThirdLoginCode,xxxx,JSON.stringify(requestParam));letresultJsonJSON.parse(result);if(nullresult||nullresultJson||!resultJson.data||!resultJson.data.code){throw集成认证中心获取登录临时code异常JSON.stringify(result);}vartempCoderesultJson.data.code;//登录URLhttps://euc.yonyoucloud.com/cas/thirdOauth2CodeLogin?thirdUCId{集成认证中心编码}code{一次性code}serviceURLEncoder.encode(https://c3.yonyoucloud.com/login?tenantId1233service URLEncoder.encode({需要单点打开的BIP地址} , UTF-8), UTF-8)varlastUrlhttps://euc.yonyoucloud.com/cas/thirdOauth2CodeLogin?thirdUCIdthirdUcIdcodetempCodeserviceencodeURIComponent(loginUrl?tenantIdtenantIdserviceencodeURIComponent(targetUrl));console.error(lastUrl);return{url:lastUrl};}catch(e){throwe;}return{};}}exports({entryPoint:MyAPIHandler});实现效果这边是做了个表单通过点击当前行的登录按钮获取当前行的手机号码调用以上的用友封装的API代码有问题也可以提出探讨~下次再会