基于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插件标识:
// 入口角色插件基类
KD.entryrole_saml2_huawei = function () {
};
KD.entryrolePlugins.register('saml2_huawei', KD.entryrole_saml2_huawei);
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%缩放即可解决问题;
【答】: 管理员账号一般不允许,可以通过建立子管理员账号来匹配。客户端同样支持的。
【问题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
------------------------------------------------------------------------------------------------
基于xx指定协议的SSO登录集成部署(HW项目备忘)
本文2024-09-23 03:52:01发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161601.html