CAS单点登录-自定义认证之重写Credential(十五)(1)

本文档介绍了如何在CAS中自定义认证过程,通过创建UsernamePasswordSysCredential类扩展凭证,增加系统参数。并详细展示了如何绑定参数、重写UsernamePasswordSystemAuthenticationHandler进行认证处理,以及在CasWebflowConfigurer和AuthenticationHandler中注册自定义配置。
摘要由CSDN通过智能技术生成
  • @since

*/

public class UsernamePasswordSysCredential extends RememberMeUsernamePasswordCredential {

@Size(min = 2, message = “require system”)

private String system;

public String getSystem() {

return system;

}

public UsernamePasswordSysCredential setSystem(String system) {

this.system = system;

return this;

}

@Override

public int hashCode() {

return new HashCodeBuilder()

.appendSuper(super.hashCode())

.append(this.system)

.toHashCode();

}

}

绑定参数

前端重写绑定参数,并且重写指定原有的“

/*

  • 版权所有.©2008-2017. 卡尔科技工作室

*/

package com.carl.sso.support.auth;

import org.apereo.cas.web.flow.AbstractCasWebflowConfigurer;

import org.apereo.cas.web.flow.CasWebflowConstants;

import org.springframework.webflow.definition.registry.FlowDefinitionRegistry;

import org.springframework.webflow.engine.Flow;

import org.springframework.webflow.engine.ViewState;

import org.springframework.webflow.engine.builder.BinderConfiguration;

import org.springframework.webflow.engine.builder.support.FlowBuilderServices;

/**

  • 重新定义默认的web流程

  • @author Carl

  • @date 2017/10/23

  • @since 1.6.0

*/

public class CustomWebflowConfigurer extends AbstractCasWebflowConfigurer {

public CustomWebflowConfigurer(FlowBuilderServices flowBuilderServices, FlowDefinitionRegistry flowDefinitionRegistry) {

super(flowBuilderServices, flowDefinitionRegistry);

}

@Override

protected void doInitialize() throws Exception {

final Flow flow = getLoginFlow();

bindCredential(flow);

}

/**

  • 绑定输入信息

  • @param flow

*/

protected void bindCredential(Flow flow) {

//重写绑定自定义credential

createFlowVariable(flow, CasWebflowConstants.VAR_ID_CREDENTIAL, UsernamePasswordSysCredential.class);

//登录页绑定新参数

final ViewState state = (ViewState) flow.getState(CasWebflowConstants.STATE_ID_VIEW_LOGIN_FORM);

final BinderConfiguration cfg = getViewStateBinderConfiguration(state);

//由于用户名以及密码已经绑定,所以只需对新加系统参数绑定即可

cfg.addBinding(new BinderConfiguration.Binding(“system”, null, false));

}

}

UsernamePasswordSystemAuthenticationHandler

当用户名为admin,并且system为sso即允许通过为了测试简单才定义简单的逻辑,开发过程中慎重考虑

/*

  • 版权所有.©2008-2017. 卡尔科技工作室

*/

package com.carl.sso.support.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值