网上很多关于配置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>
最后修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp<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>
<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");
一般都是用这个方式去获取值,但我这边就是取不到,打开源码,看到有两个filterCas20ProxyReceivingTicketValidationFilter
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的配置,如果不看源码,还真的有点麻烦。![]()
casServer单点登录返回更多用户信息正确配置
最新推荐文章于 2024-03-23 21:55:41 发布