您的位置:

CAS服务详解

CAS (Central Authentication Service) 是 Yale 大学开发的一个开源的单点登录协议,通过一个登陆中心 CAS Server,用户可以用同一个账号密码登陆到不同的系统中。该协议可以解决用户在多个系统中多次登录的繁琐,提高用户的体验和工作效率。

一、CAS服务的原理

CAS服务的原理非常简单,用户在第一次访问系统时,系统会将用户重定向到CAS Server,CAS Server会弹出一个登录页面,用户输入正确的账号和密码后,CAS Server会生成一个唯一的ticket,并将其发送给用户请求系统,用户再将该ticket发送给系统进行验证。若ticket验证通过,用户即可成功访问。

这个过程中,用户只需一次登录,就可以在多个系统中访问。这样,系统管理员也可以方便的管理用户,用户也不用记住多个账号密码,提高了系统的安全性和易用性。

二、CAS服务的特点

CAS 服务除了单点登录还有以下几个特点:

1、CAS可扩展性强

CAS支持多种身份认证方式,比如LDAP,JDBC、Kerberos、Radius等。并且CAS提供了插件式开发,市面上已经有很多插件可供选择,在此基础上二次开发十分容易。

2、CAS常见安全漏洞已经得到解决

Spring Security的CAS客户端是现在广泛应用的CAS客户端之一,已经解决了安全漏洞问题,这个客户端支持多个安全框架,如角色资源类型,Ant样式路径和Spring中的WebSecurityExpressions使用CAS 。 CAS客户端可以通过单点登录和单点注销一次配置让使用者受益。

3、CAS服务的免费开源

CAS服务是免费的开源软件,已经得到了广泛应用,能够自由地使用并进行二次开发。

三、CAS服务的使用实例

下面是一个使用CAS服务的具体例子:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-cas-client</artifactId>
        <version>5.0.4.RELEASE</version>
    </dependency>

1、首先,在pom.xml文件中添加CAS客户端的依赖:

    <bean id="casAuthenticationProvider"
        class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
        <property name="serviceProperties">
            <bean class="org.springframework.security.cas.ServiceProperties">
            <property name="service" value="http://localhost/app/login/cas" />
            <property name="sendRenew" value="false" />
            </bean>
        </property>

        <property name="authenticationUserDetailsService">
            <bean class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
                <constructor-arg>
                    <bean class="org.springframework.security.core.userdetails.inmemory.InMemoryUserDetailsManager">
                        <property name="userDetailsService">
                            <!--
                            Use whatever UserDetailsService you normally have configured to
                            populate the in-memory user's data. This example creates
                            one user with the username "user", "password" as the password,
                            and a role of "ROLE_USER".
                            -->
                            <bean class="com.ParisTest.security.TestCasUserDetailsService" />
                        </property>
                    </bean>
                </constructor-arg>
            </bean>
        </property>

        <property name="ticketValidator">
            <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
                <constructor-arg index="0" value="http://localhost:8888/cas" />
            </bean>
        </property>
    </bean>

2、配置org.springframework.security.authentication.ProviderManager

<bean id="org.springframework.security.authentication.ProviderManager" class="org.springframework.security.authentication.ProviderManager">
    <constructor-arg>
        <list>
            <ref bean="casAuthenticationProvider" />
        </list>
    </constructor-arg>
</bean>

3、最后,在web.xml中配置CAS过滤规则

<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.springframework.security.cas.web.CasAuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://localhost:8888/cas</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://localhost:8888/demo</param-value>
    </init-param>
    ...
</filter>

四、CAS服务的应用场景

CAS服务可以应用在以下多种场景中:

1、企业内部系统统一登录

企业内部往往有多个系统,不同的系统通过用户名密码登录,这样会显得十分麻烦。通过CAS服务,可以实现企业内部系统统一登录,提高企业内部工作的效率。

2、政府机关系统统一登录

政府机关系统之间互相独立,不同系统有不同的登录方式,这样会让部门之间的协作十分麻烦。通过CAS服务,政府可以实现系统统一登录,提高政府机关工作的效率。

3、高校教务系统

高校的教务系统、信息门户系统等需要承载很多学生的信息,通过CAS服务进行统一登录,提高学生的体验和工作效率。

五、总结

CAS服务是一种非常实用的单点登录协议,可以大大提高用户的工作效率和体验。CAS服务具有可扩展性,安全性好,开源免费等优点,可以用在企业内部系统,政府机关和高校等场景中。希望这篇文章对大家有所帮助。