HW IMC(ver.2020-04-28) 集成 金蝶云星空原创
金蝶云社区-yaojunsong
yaojunsong
3人赞赏了该文章 1,434次浏览 未经作者许可,禁止转载编辑于2022年02月14日 13:31:37

本篇基础:json语法,xml语法,http/https基础知识,iis基础知识,chrome浏览器



云星空与 xx-IMC工业云集成


一、项目需求


    xx - IMC工业云平台认证系统基于Cas2.0标准开发,在IMC平台上集成用户直接登入金蝶云星空,并实现IMC用户与云星空用户同步切换,权限隔离,同步注销,单点重入等功能。在云星空端入口实现HTML5端,Silverlight端,GUI桌面端的IMC登入集成校验,同时支持多数据中心,多租户隔离等功能。


二、整体集成架构


   1、 集成模式

      1.1、IMC平台 嵌套 云星空应用 (测试:https://smart-imc.com/ )

            IMC嵌套云星空HTML5应用

            IMC嵌套云星空Silverlight应用 

      1.2、云星空入口集成IMC认证

            云星空HTML5集成IMC认证 (测试 https://licv75.opstest.ik3cloud.com/k3cloud/html5/index.aspx   )

            云星空Silverlight集成IMC认证 (测试 https://licv75.opstest.ik3cloud.com/k3cloud/Silverlight/index.aspx   )

            云星空GUI集成IMC认证 (下载运行后登陆界面已集成imc认证)

      1.3、 以上全部支持单/多数据中心模式

            单数据中心默认指定模式

            多数据中心人工交互选择模式

      1.4、HTML5支持定制传参模式

            (参考:6、扩展功能 )

      1.5、现阶段仅支持单租户模式与IMC工业云集成,不支持多租户用户与工业云集成。


    2、整体架构

     image.png


三、xx-IMC端配置


    由xx-IMC平台维护实现配置。https://smart-imc.com/ 


四、云星空端配置

【“

特别声明

    1、修改任何配置文件之前,请对目标文件进行备份

    2、从论坛中拷贝出来的配置脚本,先拷贝到记事本中,并用中文空格全局替换为英文空格,然后再从记事本中拷贝到目标配置文件中进行保存。;

    3、配置文件应该保证 xml语法 完整性,不能有语法错误;

    4、任何配置文件默认都应该是 UTF-8 格式,请不要随意修改文件格式;

    image.png

”】


  (安装7.5+20201015之后最新补丁)

    1、配置AOP处理器

        website/web.config 的 httpmodule节点下增加处理器

<!--Cas回调处理模块module-->
<add name="KDIMCCasAuthModule" type="Kingdee.BOS.ServiceFacade.KDServiceWIF.CasAuth.IMCCasAuthModule,Kingdee.BOS.ServiceFacade.KDServiceWIF"/>

      

    2、配置云星空集成参数包

        website/app_data/common.config 的 configuration/appSettings路径下增加配置项(注意键值唯一,不要重复配置)

<!-- 2.1、Cas配置文件-->
<add key="CasAuthCfg" value="imccas.config"/> 
<!--2.2、启动集成校验路由器-->
<add key="StartAppPlugin" value="Default"/>
<add key="StartAppPluginUDConfig" value="{encoding:'utf-8'}" />
<!--2.3、X-Frame-Options 需要加入imc集成门户信任站点白名单-->
<add key="FrameOptionsWhiteList" value="smart-imc.com;;" />
<add key="DefaultFrameOptions" value=""/>
<!--2.4、登录界面检测启动本地服务情况(=0:不检查;=1:自动启用检查功能)-->
<add key="AutoCheckLocalServiceTray" value="0"/>


    3、配置云星空IMC的集成参数包   (参考附件:imccas.config.zip )

        common.config中配置<add key="CasAuthCfg" value="imccas.config" />设置指向imc配置参数文件。

        一般情况下如果是标准Cas2.0,只需要拷贝附件配置模板,修改serverName属性即可(实时生效,无需重启iis)。

        下图是配置文件中重点参数的说明。

image.png

       支持服务器参数改名: dynaCasParamKey="_imc_auth" 


    4、检查客户端登录定制组件的部署文件为最新补丁文件即可(最新安装包自动部署,这里仅供检查参考)

        4.1、WebSite\ClientBin\K3CloudClient\controlplugins\Kingdee.XPF.CustomLoginUIPlugins.dll.deploy


    5、云星空应用服务器需要安装xx-IMC工业云证书。

        5.1、下载Windows版IMC-CA根证书:https://imc-repository.obs.cn-south-1.myhuaweicloud.com/imc-ca/imc-cacert.cer 

        5.2、双击打开证书文件imc-cacert.cer,点击“安装证书”。

        5.3、点击“下一步”后,选择“将所有证书下列存储(P)”,点击“浏览(R)…”,在弹出的对话框里选择“受信任的根证书颁发机构”。

        5.4、单击“确定”、“下一步”、“完成”,完成服务证书导入。

        5.5、如果后端服务代码是Java,还需要将根证书导入JDK信任证书库。详情请参考《IMC第三方应用集成验证方案.pdf》参考指令备忘: (上面PDF资料由xx-IMC提供)

keytool -import -v -trustcacerts -alias imcca -file imc-cacert.cer -storepasschangeit -keystore "%JAVA_HOME%\jre\lib\security\cacerts


    6、IMC嵌套云星空模式需要xx-IMC管理员配置连接。


五、演示

    1、云星空HTML5集成:

附件 1.gif

    

    2、Imc嵌套云星空集成模式(HTML5):

附件 2.gif


    3、云星空Silverlight集成:

附件 3.gif


    4、云星空桌面应用GUI集成: K3Cloud_With_Imc_GUI.zip

附件 4.gif


六、扩展功能

    1、支持url初始化参数 loginuidata 和 entryrole(js插件挂载)

        1.1、格式JSON:loginuidata = {dbid,lcid,user,formid,formtype,entryrole,otherargs,pkid }

        1.2、【参数说明】:

                dbid:数据中心的ID;

                entryrole:验证权限的入口角色,默认为html5;

                lcid(可选):语言ID,中文2052(默认),英文1033,繁体3076;

                formid: 登录后默认打开功能的表单id;

                formtype:登录后默认打开功能的格式,单据 bill和列表list, 动态表单建议为表单Id;

                pkid:formid对应bill表单的主键;formtype为 bill时调出具体表单,如果为空表示新增状态;

                otherargs:作为用户自定义参数传入,使用于二开,具体内容和格式由二开人员确定,最终在指定表单的插件中通过OpenParameter的GetCustomParameter("StartAppArgs") as StartAppHomePageArgs的对象的CustomArgs传递;

        1.3、参考:与免登参数一致,支持 utf8+base64 编码,具体可参考免登参数列表 :https://vip.kingdee.com/article/8928 


七、填坑


    1、IMC嵌套模式下会使用IFrame,但Chrome80以上对Iframe有严格限制,所有iframe内部请求强制cookie为lax,导致登录失败提示超时。

    解决方案:由于chome有多个配置,在samesite=none时会强制移除。微软的DotNetFrameWork一直到4.7.2才支持这个新参数。各种因素导致无法在服务端统一控制浏览器行为。目前解决方案三个:

    1.1、强制设置SameSite为None,参考:https://vip.kingdee.com/article/10581 【17、如何配置cookie的samesite参数 -- 方案三、重症治疗-混合使用】

    1.2、打开Chrome设置,将chrome://flags/#same-site-by-default-cookies禁用,然后重启浏览器。(可选)

    1.3、直接采用云星空入口模式,避开IFrame的嵌套,从而避开chrome80以上的这个坑。(可选)

image.png


    2、上述对接都依赖xx-协议2020.04.28.V1版本

         云星空要做深度集成,不使用第三方CasClient部署站点,整体框架实现是按照xx-文档《IMC第三方应用集成手册》2020.04.28.V1在星空中直接实现的,如果有变动,请不要修改接口协议。

image.png

例如服务器地址:

image.png



--------------------------------------------------------------------------------

--上次编辑于2021年1月15日 14:52:31

--上次编辑于2021年1月5日 10:43:16

--上次编辑于2020年11月9日 21:43:16

。。。。。。


赞 3