单点登录cas Java篇

本文介绍了一种基于Java的单点登录(SSO)实现,通过自定义`RemoteAuthenticationFilter`扩展CAS的认证过滤器,增加了`localLoginUrl`参数,以便在认证失败时将用户重定向到指定的本地登录页面。配置中,`web.xml`设置过滤器,并在登录页面`login.jsp`中处理登录和异常信息,实现了客户端与服务端的交互。
摘要由CSDN通过智能技术生成

基于服务端的修改流程:客户端所有的远程请求都必须携带有loginUrl参数信息以使得服务器端知道在认证失败后转向客户端登陆页面。

    我们首先需要重新实现一个自己的认证过滤器,以下是我们自己的认证过滤器的代码:

 

/**

 * 远程认证过滤器.

 * 由于AuthenticationFilter的doFilter方法被声明为final,

 * 只好重新实现一个认证过滤器,支持localLoginUrl设置.

 *

 */

public class RemoteAuthenticationFilter extendsAbstractCasFilter {

   

    public static finalString CONST_CAS_GATEWAY = "_const_cas_gateway_";

 

    /**

     * 本地登陆页面URL.

     */

    privateString localLoginUrl;

   

    /**

     * The URL to the CASServer login.

     */

    private StringcasServerLoginUrl;

 

    /**

     * Whether to send therenew request or not.

     */

    private boolean renew= false;

 

    /**

     * Whether to send thegateway request or not.

     */

    private booleangateway = false;

 

    protected voidinitInternal(final FilterConfig filterConfig) throws ServletException {

       super.initInternal(filterConfig);

        setCasServerLoginUrl(getPropertyFromInitParams(filterConfig,"casServerLoginUrl", null));

       log.trace("Loaded CasServerLoginUrl parameter: " +this.casServerLoginUrl);

       setLocalLoginUrl(getPropertyFromInitParams(filterConfig,"localLoginUrl", null));

        log.trace("Loaded LocalLoginUrlparameter: " + this.localLoginUrl);

       setRenew(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig,"renew", "false")));

       log.trace("Loaded renew parameter: " + this.renew);

        setGateway(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig,"gateway", "false")));

       log.trace("Loaded gateway parameter: " + this.gateway);

    }

 

    public void init() {

        super.init();

       CommonUtils.assertNotNull(this.localLoginUrl, "localLoginUrl cannotbe null.");

       CommonUtils.assertNotNull(this.casServerLoginUrl,"casSer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值