K/3 Cloud SSO配置答疑

1、管理员账户Administrator无法自动登录系统?
:管理员administrator帐号不允许自动登录。只有业务账户才允许自动登录系统。

2、为何生成的链接无法登录系统?

1、检查有没有部署插件,启用插件;
2、确认当前版本支持该功能,并安装了该版本的最新功能补丁;(6.x V1,7.x V2)
3、修改完Common.config后,需要重启IIS,启动命令为IISRESET;

4、错误修改成ManageSite/App_Data目录下的Common.config配置文件, 而没有修改WebSite/App_Data目录下的;

5、是不是Common.config配置了多次“StartAppPlugin”导致配置冲突,删除多余配置,只保留一个;

6、检查是否存在ud参数是V2协议,但配置的启动插件是V1协议,或者反之。ud参数与解析启动插件版本不匹配问题;(如果还在使用V1协议,建议统一改成V2协议,ud参数也按V2协议编码,V2协议参考本文附录文章 )

7、用户名是否存在中文,但服务器是英文或其他语种的(参考疑6  、疑7);

8、检查Common.config的校验组件配置,如果单点校验是二开商提供的组件,请暂时恢复为星空默认出厂配置进行验证确认没有问题,就可以定位是二开组件编写有问题,请联系二开商进行二开组件修复即可;(星空默认出厂配置参考9)

9、星空默认出厂配置如下:

<!--启动服务插件 V2.0-->
<add key="StartAppPlugin" value="Default" />
<!--启动服务插件 V1.0 -->
<add key="StartAppPlugin" value="Kingdee.BOS.ServiceFacade.StartApp.MacVerify,Kingdee.BOS.ServiceFacade.StartApp" />

3、如何获取数据库的ID?
:1、由管理员查询管理中心数据库;
2、通过“管理第三方系统登陆授权”测试功能“生成Silverlight入口链接”功能获取;

4、数据库ID会变吗?
:在数据库注册到管理中心后产生一个固定ID。一旦重新注册该数据库,就会为数据库重新分配新的ID。

5、SingedData生成过程中数据的排序方式是什么?
:字符串正向排序规则。

6、用户名或者其他参数存在中文或其他Unicode字符怎么办?
:简单的方法就是针对生成好的ud参数整体进行基于Utf-8的Base64的编码,然后在启动校验插件中进行base64解码。(在K/3Cloud的出厂Demo插件已经默认支持Base64解码了。),
例如: 【http://xxxx/k3cloud/html5/index.aspx?ud=|563073d2b90b4f|Developer|hr|cf6e86aed7d40b1534cf9a1ea557a073626a30ac|1458613257|2052】 
  中的ud参数部分进行整体的基于Utf-8的Base64编码成
http://xxxx/k3cloud/html5/index.aspx?ud=fDU2MzA3M2QyYjkwYjRmfERldmVsb3BlcnxocnxjZjZlODZhZWQ3ZDQwYjE1MzRjZjlhMWVhNTU3YTA3MzYyNmEzMGFjfDE0NTg2MTMyNTd8MjA1Mg==】
即可。

疑7、服务器是英文的操作系统,但客户的用户名称却是中文的,如用户名为“爱中华”,导致自动登录老报用户名签名失败?
:简单的方法就是针对生成好的ud参数整体进行基于Utf-8的Base64的编码,然后在服务端的app_data/Common.config 配置中增加 StartAppPluginUDConfig 的配置项,参考正文 (https://vip.kingdee.com/article/8927 ) 的4.2 部署配置说明。

<add key="StartAppPluginUDConfig" value="{encoding:'utf-8'}" />

疑8、用java编写生成url的时候,老报签名错误?
:一般的存在两个错误:
1、不要引用外部的编码组件,这个问题是因为引用错误的base64组件导致编码错误,例如:org.apache.commons.codec.binary.Base64
2、签名字符串没有在数组排序后生成,导致签名错误,参考下面代码:

 【免登功能 - 使用Java代码生成简单认证参数例子篇】

   https://vip.kingdee.com/article/171816 


疑9、注销后如何退回统一登录界面,而不是金蝶云星空的登录界面?

:通过编写web.config的moduler可以实现,参考:

 【云星空登录index.aspx页面自动转向统一认证页面】

   https://vip.kingdee.com/article/170637 

 

疑10、[应用Id] 会不会过期?[会话有效时间] 是什么意思?

1、应用Id不会过期,应用密钥也不会过期,用这个密钥生成的签名数据才会有过期的说法,参考下面2【会话有效时间】的内容。

2、【会话有效时间】字段指生成的ud参数的有效时间,它是按下面的会话有效期来确定的:

比如你设置了会话有效时间为99分钟。那么你在8点钟生成的ud参数在(8点+99分钟>9点39时)就过期了。

疑11、"appSecret 公钥字符串,来自administrator管理中第三方系统登陆授权功能分配的加密钥匙" 中appSecure是什么来源 ?

1、管理员登陆云星空后,第三方系统登陆授权功能 中获取的【应用密钥】字段。

2、如下图:

云之家图片20181229135317.png

疑12、免登各种情况提示语如何进行初步诊断?

:提示语分析汇集如下:

tips1 -- 第三方应用:XXX 未授权,请联系系统管理员!

解 -- appid未注册

tips2 -- 第三方应用:XXX 已被禁用,请联系系统管理员!

解 -- appid已注册但被管理员禁用

tips3 -- 第三方应用:XXX 验证签名失败,请联系系统管理员!

解 -- 应用密钥与appid不匹配,或传入的时间戳参数与生成签名数据的时间戳不一致

tips4 -- 时间戳验证失败,请求链接已失效,请重试!

解 -- 签名数据超时时间到,或者终端电脑的时间与服务器不一致

tips5 -- 用户:XXX 不存在,请联系系统管理员!

解 -- 系统中未找到该签名用户

疑13、如何实现在第三方统一认证页面登录后在跳转云星空

:参考【关于CAS SSO的集成问题】 https://vip.kingdee.com/article/11227  其他认证系统类似,同时结合 

【云星空登录index.aspx页面自动转向统一认证页面】   https://vip.kingdee.com/article/170637  来实现完整应用。

疑14、如何单点打开多个业务单据,而不会踢出原来打开的单据。

:通过webapi判断当前的用户状态并写入待打开单据ID到数据库,另外在已经打开的定制动态表单中n秒轮训查看待打开单据ID列表,这样可以避免同一用户同时在多个单据界面并修改同一个单据导致网络控制失效,从而导致数据错误。也可以避免lic泄漏。具体参考帖子-》https://vip.kingdee.com/questions/15738 ,其中判断方法参考【宇】的答复。

疑15、用openmode=single的方式打开的单据,如何在按F5刷新浏览器不要跳出到登录而是留在当前二开单据上?

:可以利用iis的moduler功能,登录时写入session 标识的ud参数,刷新时跳回登录后判断如果有ud参数,就重新单点进去就可以了。moduler的编写可以参考下面地址。【云星空登录index.aspx页面自动转向统一认证页面】  https://vip.kingdee.com/article/170637

疑16、如何通过免登直接打开待办任务列表,如何第三方集成金蝶云星空工作流

:建议参考二次开发指导《第三方系统集成金蝶云星空工作流》 https://vip.kingdee.com/article/183922 

疑17、使用IE11 之后 星空单点登录全部都失效,用Chrome浏览器就没有问题。

:建议IE浏览器取消兼容模式就可以了。IE在兼容模式下相当于IE-7.0 ,参考下图。尤其是使用“在兼容性视图中显示Intranet站点”不要勾选,该选项会强制 所有局域网站点 都使用IE-7.0的兼容模式,就会导致站点不能用。但对于广域网站点,没有命中这个规则的都跑在IE-11.0模式下,因此广域网站点就没有问题。

疑18、按照【第三方系统单点登录到金蝶云指南V2】编程,发现没有命名空间Kingdee.BOS.BusinessEntity.Login和类SimplePassportLoginArg 。

:必须安装到 PT131268  [7.3.1150.7] 2019-1-24 之后的补丁才会有该命名空间Kingdee.BOS.BusinessEntity.Login和类SimplePassportLoginArg 提供使用。

疑19、单点登录后直接打开一些复杂单据或报表,需要准备很多参数,如何实现?

:单点登录由于是url传递数据,不建议传递太多数据,可能导致url超过浏览器限制。

* 例如一些定制报表这种复杂报表单据B,建议二开动态表单A来嵌套这种复杂报表单据B,二开的动态表单A准备好查询上下文条件,然后在传入复杂报表单据B进行查询。如何开发二开动态表单可以查询论坛相关帖子或咨询平台,具体复杂单据或报表需要准备什么查询条件和数据,咨询具体功能业务组。对于没有特殊权限或参数控制的功能,系统默认支持以下功能表单 --单据,动态表单,列表,普通报表,Sql报表等。可以参考:【自动登录后,实现自动打开某个单据的功能】https://vip.kingdee.com/article/10881 

* 如果是工作流相关参考上面答疑“16、如何通过免登直接打开待办任务列表,如何第三方集成金蝶云星空工作流”。

疑20、单点登录每增加一个用户都要生成一个秘钥匹配,做不了自动,很麻烦?

:秘钥是适用于所有当前应用的所有用户的。这里的集成用户仅是用于【生成测试链接】进行测试使用。

特别提示:“每增加一个用户都要生成一个秘钥,应用秘钥是和具体用户绑定的”这样的理解【不--正--确】。

疑21、单点登录插件定制后,如何制作安装包实现快速部署?

:二开安装包制作的帖子,可以参考下:https://vip.kingdee.com/article/5204

疑22、公有云单点登录后,定制功能扩展了HTML5主控台BOS_HtmlConsoleMain表单和挂插件,但没有效果?

:公有云主控表单BOS_O2OHtmlConsoleMain,私有云或开发环境的主控表单为BOS_HtmlConsoleMain,上面问题原因是扩展了错误的主控表单导致。

--附录---------------- 参考帖子区 ----------------------

姐妹篇

如果使用云星空默认免登逻辑登陆,可以参考下面文档实现外部参数生成即可

【第三方系统单点登录到金蝶云指南V2】 

https://vip.kingdee.com/article/9788 

 

利用启动插件校验机制实现免登录功能,实现跨系统无缝集成

https://vip.kingdee.com/article/8926 

来源:https://vip.kingdee.com/article/171574

原文地址:https://www.cnblogs.com/Bruce_H21/p/13274238.html