统一认证-单点登录

更新时间:2023-05-24 18:46:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章 统一认证

1.1 标准LDAP认证接口(轻量目录访问协议)

宏景提供了统一认证的标准基准类的IsHaveTheUserLogon,参数分别是用户名和密码(user_id,password,user_id),其对应了LDAP服务建立的用户名和密码。

如果logonclass参数不为空,宏景eHR系统认证时,先执行此参数配置的类(也即com.hjsj.hrms.businessobject.sys.sso.IsHaveTheUserLogo),通过system.properties配置文件得到LDAP服务器的相应参数,并与LDAP服务器建立链接,如果输入的用户名和密码正确,则返回true,否则返回false。

校验成功,将不再在e-HR系统的进行用户名密码的校验,而是根据用户名直接到宏景e-HR系统中取得对应的权限信息,这种方法的关键点是两边用户名必须相同。

宏景e-HR系统的用户名可以指定人员主集中的某个指标,此时需要在系统维护中进行登录认证设置“用户名指标”,如图所示:

说明:

在Logonclass执行时,如果ldapserver=AD,那么LDAP的域名DN=”CN” +用户名+”,”+ rootorg。如果不等于AD或者没有ldapserver此参数,那么LDAP的域名DN=用户名+”@”+ rootorg,当userid= xiaoming时,

如果ldapserver=AD,rootorg= ou=Employees,dc=shineoa,dc=com,那么DN=CN= xiaoming, ou=Employees,dc=shineoa,dc=com

如果dapserver=DD,rootorg= ,那么DN= xiaoming@

1.1.1 配置参数

所有有关LDAP认证参数都保存在system.properties文件中,如果采用Tomcat应用服务器,则此文件存放在{tomcat home}/config目录下,如下所示:

。。。

ldapserver=AD

rootorg=,CN=Users,o=jic,c=cn

ldaphost=ldap://ldapserver

ldapport=389

initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory

#logonclass=com.hjsj.hrms.businessobject.sys.sso.IsHaveTheUserLogon 。。。

前四个参数可能通过eHR系统进行配置,如下图所示:

配置完成后,手工把logonclass参数前面“#”去掉即要。

参数说明:

ldapserver=AD(表示为微软AD服务器,如果不为AD或者没有此参数,则表示为其它LDAP服务器)。

rootorg参数有三种格式,如下:

rootorg=(目前有三种格式,此种格式是用公司的Internet地址表示的基准DN;第二种格式是rootorg=o="FooBar, Inc.", c=US,o=FooBar, Inc. 表示组织名,c=US 表示公司的总部在美国,第三种格式是 rootorg=ou=Employees,

dc=shineoa,dc=com,用DNS域名的不同部分组成的基准)

ldaphost=ldap://ldapserve(可以是域服务器名或IP地址)

ldapport=389(域服务器名端口号)

initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory(指定JNDI服务提供程序中工厂类的名称,该工厂负责为其服务创建一个合适的InitialContext 对象,这里使用LDAP 服务器作为JNDI 服务器,所以指定的是LdapCtxFactory)

logonclass=com.hjsj.hrms.businessobject.sys.sso. IsHaveTheUserLogon(宏景开发的统一认证类)

1.2 二次开发接口

如果标准的LDAP接口类无法实现统一认证的要求,实施人员可以继承如下接口,实现这个接口类中两个方法(这个接口类在struts_extends.jar包中) /**

*

*/

package com.hrms.struts.admin;

/**

* <p>Title:VerifyUser</p>

* <p>Description:判断用户的合法性,是否存在</p>

* <p>Company:hjsj</p>

* <p>create time:2007-9-12:10:17:52</p>

* @author chenmengqing

* @version 1.0

*

*/

public interface VerifyUser {

/***

* 分析用户是否存在

* @param username 用户名

* @param password 口令

* @return

*/

public boolean isExist(String username,String password);

public String getUserId();

}

例如:

package com.hjsj.hrms.businessobject.sys.sso;

import com.hjsj.hrms.businessobject.sys.LdapAccessBo;

import com.hrms.struts.admin.VerifyUser;

/**

*

*<p>Title:</p>

*<p>Description:</p>

*<p>Company:HJHJ</p>

*<p>Create time:Sep 10, 2008</p>

*@version 4.0

*/

public class IsHaveTheUserLogon implements VerifyUser {

public boolean isExist(String username, String password) { boolean isCorrect=false; return isCorrect; return isCorrect; if(username==null||username.equals("")) if(password==null||password.equals("")) erid=username; /** * 从外部系统传过来username可能需要转换才能和宏景eHR用户对应 */ private String userid=""; /** * 新增一个UserID接口,20090624 */ public String getUserId() { } return erid;

if(LdapAccessBo.isHaveTheUser(username,password))//验证轻量级目录服务中是否有此用户

{

isCorrect=true; erid=username;//.substring(0, 5); eHR系统中的用户取自于LDAP用户前5位

} } } return isCorrect;

1.2.1 配置参数

所有有关LDAP认证参数都保存在system.properties文件中,如果采用Tomcat应用服务器,则此文件存放在{tomcat home}/config目录下,如下所示:

。。。

#logonclass=xxxx.yyy.xxxa.AAAA #去掉注释,改成自己实现的类名

。。。

第2章 单点登录

本方案采用两级认证体系,在企业统一门户上建立HJ-eHR自助服务平台或业务平台链接,在HJ-eHR平台登录时,企业统一门户把用户名和密码传给eHR系统,用户名和密码可以采用DES算法加密,也可以不用DES加密,视用户要求决定。具体单点登录过程如下:

用户输入用户名和密码,进入企业统一门户或OA系统,登录成功后在人

力资源系统链接内加入相关用户名,密码或者在对应提交的表单中加上用户名或密码。

用户点击进入宏景eHR。

通过统一认证系统,验证用户用户名和密码是否正确,如果不正确,返回

至门户登录界面,此门户页面在system.properties文件中配置,参数名为portalurl;如果正确,通过统一认证系统取得用户登录宏景人力资源系统的权限,进入宏景eHR。

统一认证系统通过POST方式以http协议,向宏景eHR系统发送用户认证信

息(包含:用户名、密码、当前时间、当前屏幕高度和宽度、认证成功后跳转到的页面等)。

统一认证系统向宏景eHR系统发送认证信息具体如下:

Action 方法的URL地址;由其他系统提供;

发送的变量有:

userName=参数值&newPassword=参数值

说明:

userName后跟参数为用户名;

Password后跟参数为密码;

2.1 单点登录实施示例

宏景eHR系统接受统一认证系统发送用户名、密码到宏景eHR系统中进行认证,认证通过,则进行后续处理。否则,提示登录失败。

示例:

<form action="http://127.0.0.1:8080/logon/logonService" method="post"> <input type="hidden" name="flag" value="19" >

<input type="hidden" name="validatepwd" value="true|false" >

<input type="hidden" name="user_ID" value="xx" >

<input type="hidden" name="password" value="yy" >

</form>

参数说明:

flag:登陆后进入不同系统平台和版本的标识

19:4.2自助平台;20:4.2业务平台;21:4.3业务平台;25:4.3自助平台

validatepwd:登录时是否校验密码。有时候统一门户只提供登录用户名时,可以把validatepwd参数的值设为false,这样如果有和登录用户名对应的用户,不去校验密码也能正常登录

user_ID: 登录用户名

password:登录密码

本文来源:https://www.bwwdw.com/article/bmv4.html

Top