casServer单点登录返回更多用户信息正确配置
2013-07-18 11:47
609 查看
网上很多关于配置casServer的文章,很详细,但是想配置出自己合适的版本会出现好多问题。
第一 版本:
我用的是cas-server-core-3.3.3.jar cas-client-core-3.2.1.jar这个版本
deployerConfigContext.xml应该这样设置返回,构造函数的参数应该为3个,网上有的是2个,配置会报错,应该是版本问题 username是默认输入框的值<bean class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao" id="attributeRepository1">
<constructor-arg index="0" ref="casDataSource"/> <constructor-arg index="1"> <list> <value>username</value> </list> </constructor-arg> <constructor-arg index="2" value="select * from users where username=?"/> <property name="columnsToAttributes"> <map> <entry key="username" value="username"/> <entry key="password" value="password"/> </map> </property> </bean>然后再添加
<property name="credentialsToPrincipalResolvers">
<list>
<bean
class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" >
<property name="attributeRepository" ref="attributeRepository1"/>
</bean>
<bean
class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
</list>
</property>
最后修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp
<c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">
<cas:attributes>
<c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</cas:attributes>
</c:if>
最后在客户端获取时,
AttributePrincipal principal = (AttributePrincipal) request .getUserPrincipal(); principal.getAttributes().get("email");
一般都是用这个方式去获取值,但我这边就是取不到,打开源码,看到有两个filter
Cas20ProxyReceivingTicketValidationFilter
Cas10TicketValidationFilter
我配置的是cas10,改回cas20就可以正确取得参数。应该是cas10没有获取其他参数的原因,只是简单的验证了ticket的原因
String allowAnyProxy = getPropertyFromInitParams(filterConfig, "acceptAnyProxy", null);
String allowedProxyChains = getPropertyFromInitParams(filterConfig, "allowedProxyChains", null);
String casServerUrlPrefix = getPropertyFromInitParams(filterConfig, "casServerUrlPrefix", null);
Cas20ServiceTicketValidator validator;
if ((CommonUtils.isNotBlank(allowAnyProxy)) || (CommonUtils.isNotBlank(allowedProxyChains))) {
Cas20ProxyTicketValidator v = new Cas20ProxyTicketValidator(casServerUrlPrefix);
v.setAcceptAnyProxy(parseBoolean(allowAnyProxy));
v.setAllowedProxyChains(CommonUtils.createProxyList(allowedProxyChains));
validator = v;
} else {
validator = new Cas20ServiceTicketValidator(casServerUrlPrefix);
}
validator.setProxyCallbackUrl(getPropertyFromInitParams(filterConfig, "proxyCallbackUrl", null));
validator.setProxyGrantingTicketStorage(this.proxyGrantingTicketStorage);
validator.setProxyRetriever(new Cas20ProxyRetriever(casServerUrlPrefix, getPropertyFromInitParams(filterConfig, "encoding", null)));
validator.setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false")));
validator.setEncoding(getPropertyFromInitParams(filterConfig, "encoding", null));
Map additionalParameters = new HashMap();
List params = Arrays.asList(RESERVED_INIT_PARAMS);
for (Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements(); ) {
String s = (String)e.nextElement();
if (!params.contains(s)) {
additionalParameters.put(s, filterConfig.getInitParameter(s));
}
}
validator.setCustomParameters(additionalParameters);
validator.setHostnameVerifier(getHostnameVerifier(filterConfig));
caserver配置使用了很多“默认”变量,像一些bean的配置,如果不看源码,还真的有点麻烦。
相关文章推荐
- Mvc4单点登录之四 配置Cas服务端,返回更多的用户信息!
- CAS SSO 4.0 单点登录返回更多用户信息
- cas 3.5.2 登录成功后返回用户更多信息
- CAS 实现单点登录(SSO)返回更多用户信息(五)
- CAS—登录后返回更多用户信息
- Cas 3.5.2 登录成功后,如何返回用户更多信息?
- cas4.0.1返回给客户端登录用户的更多信息
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- [原]基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息
- cas 3.5.2 登录成功后,如何返回用户更多信息?
- CAS—登录后返回更多用户信息
- cas登录成功返回用户更多信息
- cas 3.5.2 登录成功后,如何返回用户更多信息?
- [置顶] CAS服务端返回更多的用户登录信息
- 单点登录CAS6-服务端自定义返回的用户信息
- CAS SSO 4.0.x 返回更多用户信息
- PLSQL配置登录用户信息
- CAS3.5.2 Server登录后返回用户信息详细解决方案
- 创建并部署一个Servlet,要求在实现用户登录功能,当用户名和密码正确时跳转到欢迎页面,否则提示出错信息
- Web经典配置vs登录用户的信息进行保存vs绝对路径