单点登录集成说明

第一步:下载资源包

如果项目是maven项目可在pom文件引入以下代码:

<!--集成cas需要的jar-->
<dependency>
    <groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-core</artifactId>
    <version>3.3.3</version>
</dependency>
<!--集成cas  END    -->

如果没有使用mave,将lib目录提供的jar拷贝到应用的\WEB-INF\lib目录下。

cas-client-core-3.3.3.jar

第二步:修改应用配置文件

修改应用的web.xml文件,添加与SSO Server通信的filter和listener,具体配置信息如下: 

<!--用于实现单点登出功能 -->
<filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>

<!-- 负责用户的认证工作-->

<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>http://47.92.125.222:8080/cas/login</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://47.92.125.222:8084</param-value>
    </init-param>
</filter>

 

<!-- 该过滤器负责对Ticket的校验工作-->
<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://47.92.125.222:8080/cas</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://47.92.125.222:8084</param-value>
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()-->

<filter>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>

 

<!—需要根据实际情况,将/*  改为具体的URL-->

<filter-mapping>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

 

 

<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

第三步:定制获取当前用户信息

单点登录集成,需要应用系统调用统一用户管理系统(SSO Server)提供的API来获取。

应用系统根据需要定制调整,可以封装成一个单独的类,可以直接拷贝下面的代码片段在需要获取当前用户的地方直接使用。

/* 引入接口类 */

import org.jasig.cas.client.util.AssertionHolder;

import java.util.*;

 

……

 

Map<String,Object> attrMap = null;

Assertion assertion= null;

try{

assertion = AssertionHolder.getAssertion();

attrMap = assertion.getPrincipal().getAttributes();

}catch (Exception e){

        logger.error("获取登录用户对象失败!!!");

}

 

if(null == attrMap || 0 == attrMap.size()){

       //需要跳转到登录页面重新登录

       ……

       

}else{

   //需要应用系统编写代码,从attrMap获取业务需要的当前登录用户信息。

   ……

   String account=(String)attrMap.get(“ACCOUNT”);

 

   ……

 

}

 

……

 

 

attrMap包含的登录用户信息,分为企业用户和内部用户两种,两种不同用户的数据项也有所不同,具体如下:

1、企业用户属性

ACCOUNT        //账号

TYPE           //账号类型   TYPE=3

TELEPHONE      //手机号

CHECK_STATE    //审核状态   0:未审核   1:已审核

COMPANY_NAME   //企业名称

AREA_CODE      //企业所在省份行政区划代码)

AREA_NAME      //企业所在名称

 

2、内部用户属性

ACCOUNT         //账号

TYPE            //账号类型   TYPE=1

TELEPHONE       //手机号

NAME            //姓名

CARD_ID         //身份证号

ORG_CODE        //所在机构编码

ORG_NAME        //所在机构名称

ORG_STATE       //所在机构状态     0:正常    1:待注销

PARENT_ORGCODE  //上级检验机构编码

SUR_TYPE         //是否验船师

SEX             //性别     1:男   2:女

NATION          //民族(代码)

BIRTH           //出生年月

POLICTICAL      //政治面貌(代码)

EDUCATION       //学历(代码)

MAJORS          //专业(代码)

WORK_HISTORY     //工作履历

EMAIL           //邮箱

第四步:账号信息同步

4.2、企业用户

1、企业账号同步,采取在企业第一次登录业务系统时,由业务系统同步到业务系统

1)企业账号登录业务系统后,通过调用统一用户提供的接口,获取到当前登录账号信息(见第三步:定制获取当前用户信息)。

(2)获取ACCOUNT值,在本地登录登录

在的本地登录时,到本地数据库查找,如果没有该账号,说明账号还没同步,就将获取的该账号的信息插入到业务系统的数据库,同时默认授权(实名认证)。

(3)在业务系统审核完企业账号的实名认证,调用统一用户提供的接口,将账号状态变为“已审核”(使CHECK_STATE=1)。

2、企业第一个注册的账号,通过实名认证后,自动成为企业管理员,可以在统一用户管理中为该企业添加其他账号(企业管理员添加的账号不用再做实名认证,企业管理员可以不再添加新账号)。

新添加的账号,仍采取在企业第一次登录业务系统时,由业务系统调用统一用户提供的接口,将获取到当前登录账号信息(见第三步:定制获取当前用户信息)插入到业务系统的库表,同时默认授予跟第一个企业账号一样的权限。

4.2、对于内部用户

内部用户同步,通过主数据实现同步,添加一个内部用户,需要在业务系统中授权才能进入业务系统办理业务。

业务系统授权时,触发一下同步操作,将数据同步到应用系统。

 

猜你喜欢

转载自blog.csdn.net/zzhuan_1/article/details/83964104