基于xx指定协议的SSO登录集成部署(HW项目备忘)

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

基于xx指定协议的SSO登录集成部署(HW项目备忘)


基于xx指定协议的SSO登录集成部署


目录
一、部署总纲
二、配置文件 
. 1、web.config
. 2、common.config
. 3、saml2_huawei.xml
三、二次开发插件
. 1、GUI登录客制化插件
. 2、HTML5登录客制化插件
. 3、Silverlight登录客制化插件
 
四、答疑篇


一、部署总纲:

1、向xx注册issuer, 申请方法参考:【xx Uniport登录集成实施方案(分享)】  https://vip.kingdee.com/article/32929  

2、备份好生产环境,正式的数据中心数据库,然后安装7.x最新补丁(2017-12底发布);
3、在金蝶云系统的用户里把所有用户的uniport账号维护好,包括系统管理员;
4、把正式环境的如下配置文件进行配置(配置方法参考后面详细章节,所有配置文件必须为UTF-8格式存储);
    webSite/web.config; 
    webSite/app_data/common.config;
    webSite/app_data/saml2_huawei.xml;
5、拷贝证书文件 HuaweiCA.cer, KingdeeCA.pfx 到webSite/app_data/目录下;
    HuaweiCA.cer为sso登录门户提供者提供(huawei);
    KingdeeCA.pfx由SaaS软件提供者提供(金蝶);
6、部署二次开发插件(huawei项目已经包含在补丁包中);


二、配置文件:

1、web.config:
  在【System.webServer】节点下,找到<modules>节点,如下增加配置子节点:
    <!--支持SSO第三方服务集成-->
    <add name="KDSSOFilterModule" type="Kingdee.BOS.ServiceFacade.KDServiceWIF.KDSSOFilterModule,Kingdee.BOS.ServiceFacade.KDServiceWIF"/>  


  在【System.webServer】节点下,找到<handlers>节点,如下增加配置子节点:
    <!--支持SSO第三方服务集成-->
    <add name="KDSSOFilterHandler" path="*.kdsso" verb="*" type="Kingdee.BOS.ServiceFacade.KDServiceWIF.KDSSOFilterHandler,Kingdee.BOS.ServiceFacade.KDServiceWIF"/>  



2、common.config:
   在【AppSettings】节点要加入如下子节点:
    <!-- 启动SSO网站过滤器配置文件-->
    <add key="SSOModuleFilter" value="saml2_huawei" />
    <!--定制化登录界面-->
    <add key ="CustomLoginUI" value="Kingdee.XPF.CustomLoginUIPlugins.Saml2_HuaWei_Login,Kingdee.XPF.CustomLoginUIPlugins" />
    <!--当定制化登录界面构建失败时,允许使用默认的登录界面代替-->
    <add key ="AllowCustomUseDefLoginUI" value="true" />
    <!-- 登录角色类型(比如电商,避免登录后修改URL角色导致权限扩大) -->
    <add key="LoginEntryRole" value="saml2_huawei"/>

3、saml2_huawei.xml:
  3.1.新建xml文档,内容可以拷贝saml2.xml,并移除所有注释(避免因为修改了注释引发xml语法错误);
  3.2.xml文档内部的所有节点在Saml2.xml中都有详细说明;(saml2.xml作为安装包的一部分已经部署到website/app_data/目录);
  3.3.修改该文件的数据项目[configuration/Settings/Issuer/@SSOUrl]的saas地址,例如“http://huawei.test.ik3cloud.com”(即正式saas的地址“http://huawei.ik3cloud.com”);
  3.4.在该文件检查下面节点是否正确(关系到客户端是否能够登入系统);
    <ClientAppUserAgent Value="Kingdee.BOS.XPF.App.vshost.exe;Kingdee.BOS.IDE.vshost.exe;Kingdee.BOS.BizShell.exe;Kingdee.BOS.BuildPackageDownload.Shell.exe;Kingdee.BOS.BuildReport.Shell.exe;Kingdee.BOS.BuildService.Shell.exe;Kingdee.BOS.DeskClient.Service.exe;Kingdee.BOS.DeskClient.Shell.exe;Kingdee.BOS.DeskClient.WinService.exe;Kingdee.BOS.IDE.exe;Kingdee.BOS.Install.exe;Kingdee.BOS.KDSReport.exe;Kingdee.BOS.LocalServices.exe;Kingdee.BOS.Management.ManagementService.exe;Kingdee.BOS.Management.Website.Console.exe;Kingdee.BOS.Management.Website.UI.exe;Kingdee.BOS.MQService.exe;Kingdee.BOS.NotePrint.IDE.exe;Kingdee.BOS.ReportIDE.exe;Kingdee.BOS.ScheduleService.exe;Kingdee.BOS.XPF.App.exe;Kingdee.BOS.XPF.App.vshost.exe;Kingdee.BOS.XPF.Updater.exe;Kingdee.CDP.AnalyzeReport.Shell.exe;" AllowHandlerPaths=".kdsvc;"></ClientAppUserAgent>

  3.5.检查该文件中的 configuration/Settings/CallBack/@ResponseBackUrl的参数是否存在 &entryrole=saml2_huawei 参数;(该参数关系到html5端是否能正确登录);
  3.6.不弹出数据中心与语言选择列表的配置,检查该文件中的如下节点:(参考saml2.xml说明)
  <ControlParameter DataCenterManualSelected ="False" DataCenterDefaultID="" DataCenterDefaultLCID="2052"></ControlParameter>

三、二次开发插件

1、GUI登录客制化插件

(以下文件已经作为安装包一部分发布,只需要检查该文件是否存在即可,以及配置版本配置是否正确即可;)
  1.1.部署Kingdee.XPF.CustomLoginUIPlugins.dll.kdz到 【website/clientbin/customcontrol/wpf】目录下;
  1.2.修改【website/clientbin/customcontrol/wpf/MainDownload.xml】修改 Version值为最新时间;
  1.3.修改【website/clientbin/customcontrol/wpf/MainDownloadList.xml】增加以下节点;
    <KDDownloadItem>
      <DeployPath />
      <VersionInfo>2017-12-06#19:58:05</VersionInfo>
      <CurrentVersionInfo /><SourcePath>/ClientBin/CustomControl/WPF/Kingdee.XPF.CustomLoginUIPlugins.dll.kdz</SourcePath>
      <ItemName>Kingdee.XPF.CustomLoginUIPlugins.dll</ItemName>
      <ExtName>.kdz</ExtName>
      <SvrDeployPath>\ClientBin\CustomControl\WPF</SvrDeployPath>
    </KDDownloadItem>

2、HTML5登录客制化插件
  2.1.【App_data/EntryRouter.config】最后增加一个节点如下:
  <EntryRoles>
    <EntryRole>saml2_huawei</EntryRole>
    <MainFormId>BOS_HtmlConsole</MainFormId>
    <MainPageId>MainPageId</MainPageId>
    <MainFormType>mobileform</MainFormType>
    <MenuFormId></MenuFormId>
    <MenuFormType></MenuFormType>
    <CssPlugins Version="1.0">
      <Item Value="Kingdee.EntryRole.saml2_huawei.Plugin"/>
    </CssPlugins>
    <JSPlugins Version="1.0">
      <Item Value="Kingdee.EntryRole.saml2_huawei.Plugin"/>
    </JSPlugins>
    <ThemePlugins Version="1.0">
      <ThemeItem Key="standard" Name_1033="Standard" Name="默认皮肤" Color="#C03515"></ThemeItem>
    </ThemePlugins>
  </EntryRoles>


  2.2.在【website/html5/content/themes/kd/plugins/】目录下增加【Kingdee.EntryRole.saml2_huawei.Plugin.css】样式表文件;(可以拷贝同目录下的出厂demo插件Kingdee.EntryRole.saml2.Plugin.css,进行改名)

  2.3.在【website/html5/script/kd/plugins/】目录下增加【Kingdee.EntryRole.saml2_huawei.Plugin.js】特性插件;(可以拷贝同目录下的出厂demo插件Kingdee.EntryRole.saml2.Plugin.js,进行改名)
  2.4.修改拷贝改名的插件【Kingdee.EntryRole.saml2_huawei.Plugin.js】的前面五行代码为saml2_huawei插件标识:

  1. // 入口角色插件基类

  2. KD.entryrole_saml2_huawei = function () {

  3. };

  4. KD.entryrolePlugins.register('saml2_huawei', KD.entryrole_saml2_huawei);

  5. KD.entryrole_saml2_huawei.prototype = {

复制代码


3、Silverlight登录客制化插件

  Silverlight由于微软框架限制,暂时不支持外部二开插件,xx指定协议SSO的功能已经内置到补丁包中,直接安装即可使用。



(图片来源:https://www.jianshu.com/p/636c1ee16eba/)



四、【答疑篇】


【问题1】:GUI首次选错数据中心,重新登录选正确的数据中心不能进入主控;

【答】:两种情况

1、如果是7.x最新版本已经修复该问题.

2、6.x 需要更新到 2017-11-14号补丁PT119117,然后更新附件Kingdee.XPF.CustomLoginUIPlugins.dll.zip 压缩包内的文件到服务器WebSite/ClientBin/CustomControl/WPF可以解决(不需要重启iis,只需重新从桌面打开GUI即可) 


【问题2】:数据中心列表居中问题;
【解决方案】:属于应用问题,因为IE缩放比例不是100%导致,把IE100%缩放即可解决问题;


【问题3】: Adminsitrator 账号怎么处理? 怎么维护uniport 账号?

【答】: 管理员账号一般不允许,可以通过建立子管理员账号来匹配。客户端同样支持的。


【问题4】、HW XX 指定协议 SSO部署补丁升级简化步骤:
【答】:步骤如下
第一步:在用户里把所有用户的uniport账号维护好,包括系统管理员;
第二步:把正式环境的配置文件(web.config、common.config、saml2_huawei.xml)改好(记得存为utf-8格式);
第三步:备份环境,账套,如果需要就打最新补丁;
第四步:替换web.config、common.config、saml2_huawei.xml 配置文件, 拷贝 HuaweiCA.cer, KingdeeCA.pfx(现有环境下有这个证书,可以直接拷贝使用) 两个证书到app_data文件夹下;
第五步:测试验证;


【问题5】: 应该是访问一些地址被saml拦截了,可以对特定的请求地址进行例外设置.
【答】: 增加例外配置如下
1、在app_data\saml2_huawei.xml配置文件中的ExcludeRequireKeyWords有说明的。
2、配置ExcludeRequireKeyWords如有多个关键字,可以用 “;”隔离。
3、但关键字应当注意尽量少,能合并的尽量合并,关键字越少,性能越好。
4、例如WebApi的调用加入:AuthService;TestForm;


image.webp


【问题6】: 内容配置已经实现了UAT环境 Uniportal测试环境的SSO集成,但是客户要求的是与xx内网 W3 门户集成。根据帖子修改 saml2_huawei.xml 的[configuration/Settings/Issuer/@SSOUrl] SSOURL 为 https://login-beta.huawei.com 但是登陆系统显示的还是Uniportal 测试环境,手动更新修改URL 又可以成功跳转到W3.请楼主帮忙分析下问题
【答】:步骤如下
1、修改配置后,要重启金蝶云星空站点(iisreset),否则配置缓存不能更新。
2、金蝶云星空网站和用户必须在xx的sso上进行注册。(需要找xx的管理员处理)。
3、如果需要对接的是 WC门户,注意HuaweiCA.cer的证书文件是否有更新需要(咨询xx统一认证登录的管理人员)。
4、修改 saml2_huawei.xml 的[configuration/Settings/Issuer/@SSOUrl] SSOURL 节点为SSO指定站点。


【问题7】:如何实现登录时不弹出数据中心列表?
【答】: 需要做如下配置,实现不弹出数据中心列表选择和语言选择的配置:(6.x不支持这个配置功能, 7.x 支持GUI,Silverlight,HTML5三个端)
1、默认是需要弹出选择界面提供数据中心选择和语言选择的;
2、如果特殊需求需要直接登入系统,而不弹出选择数据中心界面,请做如下配置:
website/app_data/saml2_huawei.xml的[configuration/Settings/]节点下增加如下节点
    <!-- 控制参数:
      DataCenterManualSelected 登录后显示数据中心列表提供人工选择;
      DataCenterDefaultLCID 登录后如果自动进入系统使用的LCID; 
      DataCenterDefaultID 指定特定的数据中心ID登录系统,没有指定,而且不是人工选择数据中心的情况,就自动默认取第一个;
    -->
    <ControlParameter DataCenterManualSelected ="False" DataCenterDefaultID="" DataCenterDefaultLCID="2052"></ControlParameter>


【问题8】:IIS 6 下如何配置Web.Config配置实现Module
【答】:

1、在【System.web】节点下,找到<httpModules>节点下加入下面子节点
      <!--支持SSO第三方服务集成-->
      <add name="KDSSOFilterModule" type="Kingdee.BOS.ServiceFacade.KDServiceWIF.KDSSOFilterModule,Kingdee.BOS.ServiceFacade.KDServiceWIF"/>
2、在【System.web】节点下,找到<httpHandlers>节点下加入下面子节点
      <!--支持SSO第三方服务集成-->
      <add  name="KDSSOFilterHandler" path="*.kdsso" verb="*" type="Kingdee.BOS.ServiceFacade.KDServiceWIF.KDSSOFilterHandler,Kingdee.BOS.ServiceFacade.KDServiceWIF"/>


ps: 文章中xx为脱敏替代某公司名称

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

老论坛原始贴:https://vip.kingdee.com/article/36710 

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

创建于2017年12月18日 19:00:00
编辑于2019年1月28日 10:54:42
编辑于2020年7月22日 18:37:20
编辑于2021年8月11日 10:46:20


Kingdee.XPF.CustomLoginUIPlugins.dll.zip

基于xx指定协议的SSO登录集成部署(HW项目备忘)

基于xx指定协议的SSO登录集成部署目录:一、部署总纲二、配置文件 . 1、web.config. 2、common.config. 3、saml2_huawei.xml三、二次开发插...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息