基于Saml2协议的SSO登录集成部署(huawei项目备忘)
金蝶云社区-lindsey
lindsey
12人赞赏了该文章 1,788次浏览 未经作者许可,禁止转载编辑于2018年12月11日 23:03:09
summary-icon摘要由AI智能服务提供

本文介绍了基于Saml2协议的SSO登录集成部署的详细步骤,包括部署总纲、配置文件编辑(web.config、common.config、saml2_huawei.xml)和二次开发插件部署(GUI、HTML5、Silverlight登录客制化)。部署总纲涉及环境备份、账号维护、配置文件配置和证书文件拷贝。配置文件详细说明了需在web.config中增加支持SSO的模块和处理器配置,common.config中添加SSO配置和登录界面定制化设置,saml2_huawei.xml则进行特定配置和检查以确保客户端能正确登录。二次开发插件部分则分别指导了GUI、HTML5和Silverlight登录界面的客制化部署方法。

基于Saml2协议的SSO登录集成部署

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

一、部署总纲

1、备份好生产环境,正式的数据中心数据库,然后安装7.x最新补丁(2017-12底发布);
2、在金蝶云系统的用户里把所有用户的uniport账号维护好,包括系统管理员;
3、把正式环境的如下配置文件进行配置(配置方法参考后面详细章节,所有配置文件必须为UTF-8格式存储);
    webSite/web.config;
    webSite/app_data/common.config;
    webSite/app_data/saml2_huawei.xml;
4、拷贝证书文件 HuaweiCA.cer, KingdeeCA.pfx 到webSite/app_data/目录下;
    HuaweiCA.cer为sso登录门户提供者提供(huawei);
    KingdeeCA.pfx由SaaS软件提供者提供(金蝶);
5、部署二次开发插件(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由于微软框架限制,暂时不支持外部二开插件,saml2的功能已经内置到补丁包中,直接安装即可使用。

图标赞 12
12人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!