-
yangqh 数据老手Lv5
发表于2019-5-17 16:36
楼主
单点登陆是非常常用的系统集成方式,而单点配置过程中,有两个非常常见、重要的设置:一是将登陆账号信息放入session,二是配置第三方机构库表时选择加密方式。那么具体如何设置、需要注意一些什么呢?且看下文~
我们的单点机制,利用了session,需要的登录账号信息(主要是登录ID和密码加密串)都需要从session中获取。
如果主系统在登录成功以后,没有把登录账号信息放入session中,就需要改造一下主系统,把登录账号信息放入session中。
放入session中有两种可以支持的方式(这两种方式对应ssoconfig.xml的配置会有些不同):
如果主系统在登录成功以后,没有把登录账号信息放入session中,就需要改造一下主系统,把登录账号信息放入session中。
放入session中有两种可以支持的方式(这两种方式对应ssoconfig.xml的配置会有些不同):
1.登录ID和密码加密串作为一个登录对象的属性,且登录对象提供相关的方法来获取登录ID和密码加密串的值,这是常用的一种方式;
Ssoconfig.xml配置如下:
- <master loginstatustype="session" enablefilter="true">
- <loginstatus-session entitytype="object">
- <!-- 以下设置为主系统的Login对象在服务器session中的名字-->
- <loginstatus-obj-name>login</loginstatus-obj-name>
- <!--以下设置为主系统的Login对象的完整Java class名(带包名) -->
- <loginstatus-obj-class>sso.MasterLogin</loginstatus-obj-class>
- <!-- 以下设置为该Login对象提供的返回登入id的方法名 -->
- <loginstatus-obj-id>getId</loginstatus-obj-id>
- <!-- 以下设置为该Login对象提供的返回登入密码的方法名 -->
- <loginstatus-obj-pw>getPassword</loginstatus-obj-pw>
- </loginstatus-session>
2.没有登录对象,直接把登录ID和密码加密串作为两个字符串放入session中
Ssoconfig.xml配置如下:
- <master loginstatustype="session" enablefilter="true">
- <loginstatus-session entitytype="string">
- <!-- 以下设置为登入id属性名 -->
- <loginstatus-str-id>userAccounts</loginstatus-str-id>
- <!-- 以下设置为登入密码属性名 -->
- <loginstatus-str-pw>userpassword</loginstatus-str-pw>
- </loginstatus-session>
注:
object表示session中账号信息以对象形式存储,string表示session中账号信息以字符串形式存储。
当第三方为主系统,BI为辅系统时,密码登陆校验的处理过程大概是这样的:
第三方登录页输入账号密码-》第三方登陆校验成功-》账号信息存入主系统session-》主系统把session中的账号信息传给BI-》BI做密码校验
不同的单点场景,第三方机构库表加密方式的选择也不一样,具体如下:
单点环境:
[size=10.5000pt]1、第三方主系统,用第三方登录页,密码存{md5}加密值:
选择{md5}
[size=10.5000pt]2、第三方主系统,用第三方登录页,密码存md5加密值:
选“没有加密”
选“没有加密”
[size=10.5000pt]3、第三方主系统,用第三方登录页,密码存明文值,或者是其他加密方式(比如说des):
选“没有加密”
注:
{md5}加密或者明文时,BI登录页可以正常登陆,其他加密方式情况,BI登录页不能登陆,因为BI登陆页是{md5}加密方式。
非单点情况:
密文存的什么加密方式的值,就选择什么加密方式,目前支持{md5}、md5、不加密。