本文介绍了基于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插件标识:
// 入口角色插件基类
KD.entryrole_saml2_huawei = function () {
};
KD.entryrolePlugins.register('saml2_huawei', KD.entryrole_saml2_huawei);
KD.entryrole_saml2_huawei.prototype = {
复制代码
3、Silverlight登录客制化插件:
Silverlight由于微软框架限制,暂时不支持外部二开插件,saml2的功能已经内置到补丁包中,直接安装即可使用。
推荐阅读