快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱乐app官网:CAS实现URL扩展参数



曩昔用CAS3.3.1实现了一个SSO单点登录,此次碰到一个新需求。

用户想用一个URL链接过来登录,同时要根据URL通报过来的参数转向到一个用户自己定义的页面。

比如,当一封邮件发送给用户后,用户能点击这个LINK直接转向到我们的系统,登录,并转向到用户想要看到的某个特定页面:

Link

这个链接里面通报了三个参数

username用户名

password密码

service是要转向的页面,此平分了两部分,

http://localhost:8088/itsmadmin/j_spring_cas_security_check 是要转向的WAR包的认证路径

spring-security-redirect 是专项该WAR认证成功后转向的URL

要完成这个功能,必要对CAS3.3.1的源码做轻细篡改

org.jasig.cas.CentralAuthenticationServiceImpl 这个类为CAS认证TICKET的进口,不用篡改

org.jasig.cas.ticket.ServiceTicketImpl这个类里面的措施

public boolean isValidFor(final Service serviceToValida和记娱乐app官网te) {

updateState();

return serviceToValidate.matches(this.service);

}

会去验证,这个s和记娱乐app官网ervice参数和sp和记娱乐app官网ring-security设置设置设备摆设摆设里面的service是否同等

但这里的service是WAR里面固定的,不会根据参数的不合而改变。以是不改动这里会导致

org.jasig.cas.CentralAuthenticationServiceImpl这个类里面的如下行报错:

if (!serviceTicket.isValidFor(service)) {

if (log.isErrorEnabled()) {

log.error("ServiceTicket [" + serviceTicketId

+ "] with service [" + serviceTicket.getS和记娱乐app官网ervice().getId() + " does not match supplied service [" + service + "]");

}

throw new TicketValidationEx和记娱乐app官网ception(serviceTicket.getService());

}

我用对照土的法子,改动了

org.jasig.cas.ticket.ServiceTicketImpl这个类里面的措施

public boolean isValidFor(final Service serviceToValidate) {

updateState();

//return serviceToValidate.matches(this.service);

return true;

}

然后从新打包一下

到这个路径

E:\book\opensource\cas\cas-server-3.3.1\cas-server-core

敕令:

mvn clean

mvn -DskipTests=true package

结果这个版本的pom.xml似乎有点差错,报错找不到这个类:

找不到类MapAdaptable

org.springframework.binding.collection.MapAdaptable

我改动了pom.xml文件,增添了spring-binding

org.springframework

spring-binding

1.0.5

compile

打包成功。

应用POST要领通报三个参数到以前已经可以正常登岸了。发明在URL通报的时刻却要报错用户名和密码差错。

改动了cascenter2/WebContent/WEB-INF/view/jsp/customer/ui/casLoginView.jsp

里面的

">

">

就OK了。

然则新问题出来了,当输入用户名和密码差错的时刻,不能返回到登岸页面并提示,原本是由于我把QUERYSTRING省略了的缘故原由

改为

">

就OK了。

您可能还会对下面的文章感兴趣: