cas5.3单点登录。此为直接使用的,如果是想来学cas的话,我这不能给到你什么帮助。

1 篇文章 0 订阅
1 篇文章 0 订阅
一、基础安装

因为安装需要去改配置很麻烦,下载也是非常麻烦的事,要写的字也挺多的,我就直接一套弄好的丢这上面。这边建议直接使用idea去启动。因为你如果用get去启动的话那么就会让你去修改maven的环境配置名称,还容易报出jdk的错。用idea就会修改启动更方便

百度网盘 请输入提取码密码1111

解压后直接用idea启动就好了。

二、登录

使用localhost:8443/cas/login登录。查看是否正常。

登录账号:admin

登录密码:ABCabc123

修改密码在cas-overlay-template-5.3\src\main\resources\application.properties的最下面的位置修改

 登录成功后会进入到

 三、需要单点登录的项目内配置。

web.xml处配置过滤器

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
	<listener>
		<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
	</listener>
	<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
	<filter>
		<filter-name>CASSingleSignOutFilter</filter-name>
		<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CASSingleSignOutFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 该过滤器负责用户的认证工作,必须启用它 -->
	<filter>
		<filter-name>CASFilter</filter-name>
		<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
		<init-param>
			<param-name>casServerLoginUrl</param-name>
			<!--CAS登录地址-->
			<param-value>http://localhost:8443/cas/login</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<!--这里的server是服务端的IP-->
			<param-value>http://localhost:8080</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CASFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
	<filter>
		<filter-name>CASValidationFilter</filter-name>
		<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
		<init-param>
			<param-name>casServerUrlPrefix</param-name>
			<param-value>http://localhost:8443/cas</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8080</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CASValidationFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
	<filter>
		<filter-name>CASHttpServletRequestWrapperFilter</filter-name>
		<filter-class>
			org.jasig.cas.client.util.HttpServletRequestWrapperFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CASHttpServletRequestWrapperFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->
	<filter>
		<filter-name>CASAssertionThreadLocalFilter</filter-name>
		<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CASAssertionThreadLocalFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!--======================================================================单点登录======================================================================-->

java代码部分

public class SsoExampleFilter extends AbstractAuthenticationProcessingFilter {
    @Override
    protected boolean requiresAuthentication(HttpServletRequest request, HttpServletResponse response) {
        if (request.getRequestURI().indexOf("login") != -1) {
            return true;
        } else {
            return false;
        }
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        String uri = request.getRequestURI();
        HttpSession session = request.getSession();
        try {
            if (requiresAuthentication(request, response)) {
                // 获取用户信息并自动登录
                AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
                String username = principal.getName();
                AutoLoginHelper autoLoginHelper = (AutoLoginHelper) SpringBeanUtil.getBean("autoLoginHelper");
                //String Name = autoLoginHelper.doAutoLogin("lisi", session);
                String checkUserName = autoLoginHelper.doAutoLogin(username, session);
                if (StringUtil.isNotNull(checkUserName)) {
                    // 自动登录成功,完成登录并继续处理当前请求
                    successfulAuthentication(request, response);
                } else {
                    //String username = validateCookie(request, response);
                    // 自动登录失败,返回登录页面
                    response.sendRedirect("http://localhost:8443/cas/login");
                    return;
                }
            } else if (uri.indexOf("logout") != -1) {
                // 用户退出登录,使当前Session失效
                if (session != null) {
                    session.invalidate();
                }
                // 重定向到登录页面
                //https://rz.ytvc.edu.cn/cas/login
                response.sendRedirect("http://localhost:8443/cas/logout");
                return;
            } else {
                // 处理非登录、非退出的请求,继续处理当前请求
                chain.doFilter(request, response);
                return;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }

    }
    private String validateCookie(HttpServletRequest request, HttpServletResponse response) {
        // TODO 去验证系统验证用户是否登录,红色这里就是第三方提供的获取方法。
        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
        return principal.getName();
        //return request.getParameter("loginName");
    }
    @Override
    protected boolean validatePassword(String username, String password) {
        return false;
    }
}

 当时使用的是ekp去做的单点登录,可能会有点误差,到时候根据情况微调一下。

四、其他部分。

cas的登录页面可以根据自己要求修改,以及登录的账号密码可以修改,资料在cadn上都可以找得到。

我当时因为客户已经有自己的cas。所以登录页面以及cas获取mysql部分我没去做。看别人的发出来也没意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CAS(Central Authentication Service)是一种单点登录协议,它允许用户一次登录即可在多个应用程序中进行身份验证和授权。要使用CAS完成单点登录,您需要在服务器上安装CAS服务器,并将其配置为您的应用程序可以使用的身份验证源。在您的应用程序中,您需要使用CAS客户端库来与CAS服务器进行通信,以验证用户身份和授权访问。用户通过CAS登录后,应用程序将从CAS服务器获取身份验证令牌,以便在用户访问应用程序时进行身份验证。这样,用户就可以在不需要再次输入凭据的情况下访问多个应用程序了。 ### 回答2: CAS(Central Authentication Service)是一种基于标准协议的单点登录解决方案,用于在多个应用系统中实现一次登录多次访问的功能。以下是使用CAS完成单点登录的步骤: 1. 部署CAS服务器:首先,需要搭建CAS服务器。可以选择使用开源的CAS服务器实现,如Apereo CAS或Jasig CAS。将CAS服务器安装在Web容器中,如Tomcat。 2. 配置CAS服务器:在CAS服务器上配置相关参数,包括CAS服务端口、证书、认证方式等。还需配置相应的用户认证方式,如LDAP、数据库等,以便CAS从这些认证源中验证用户身份。 3. 配置应用系统:将需要实现单点登录的应用系统配置为CAS客户端。CAS客户端负责与CAS服务器进行通信并获取用户认证信息。在应用系统的配置文件中,设置CAS服务器的地址和端口,并指定CAS授权和认证回调URL。 4. 用户访问应用系统:当用户访问某个应用系统时,应用系统检测用户是否已登录。若未登录,则将用户重定向至CAS服务器进行认证。 5. CAS认证流程:用户在CAS服务器上输入用户名和密码进行认证。CAS服务器通过预先配置的认证方式,如LDAP或数据库,验证用户身份的合法性。若认证成功,则CAS服务器生成一个票据(ticket),并将用户重定向至应用系统的回调URL,并在URL中附带生成的票据。 6. 应用系统认证处理:应用系统接收到CAS服务器回调的URL,提取URL中的票据信息。应用系统通过与CAS服务器的通信,校验票据的有效性。若票据有效,则应用系统将用户标识为已认证,完成单点登录。 7. 单点退出:当用户在某个应用系统中执行退出操作时,应用系统将用户重定向至CAS服务器进行单点退出。CAS服务器会通知其他已登录的应用系统将用户标记为已退出,并且跳转到CAS服务器的退出页面。 通过CAS实现单点登录,用户只需登录一次,即可访问多个应用系统,提高了用户体验,减少了重复登录的繁琐。同时,也可以提高安全性和统一管理性,减少密码泄露的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值