你默认安装了cas以后,只能看到username一个信息,如果你想增加部门,姓名等信息的时候就无能为力了。其实cas是解决了这个问题的,但是需要你增加些配置和修改一些代码。方法如下。
1、修改deployerConfigContext.xml文件中的attributeRepository的实现
<bean id=”attributeRepository” class=”org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao”>
<constructor-arg index=”0″ ref=”ssoDataSource” />
<constructor-arg index=”1″ >
<list>
<value>username</value>
</list>
</constructor-arg>
<constructor-arg index=”2″ value=”select * from user_attr where username = ? ” />
<property name=”columnsToAttributes”>
<map>
<entry key=”realname” value=”realname” />
<entry key=”usergroup” value=”usergroup” />
</map>
</property>
</bean>
我这里边使用的是jasig的persondir,他的svn在
https://www.ja-sig.org/svn/person-directory
这个地址。可以使用siglerow,也可以使用多行的实现。
我这里边使用的是siglerow的。
<constructor-arg index=”1″ >
<list>
<value>username</value>
</list>
</constructor-arg>
这个参数是sql中使用的参数。
<property name=”columnsToAttributes”>
<map>
<entry key=”realname” value=”realname” />
<entry key=”usergroup” value=”usergroup” />
</map>
</property>
这个是准备提供给应用的参数。
2、建立数据表
CREATE TABLE IF NOT EXISTS `user_attr` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(50) NOT NULL,
`realname` varchar(50) default NULL,
`usergroup` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
3、修改输出的jsp文档
cas-server-webapp/src/main/webapp/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:attribute>
<cas:name>${fn:escapeXml(attr.key)}</cas:name>
<cas:value>${fn:escapeXml(attr.value)}</cas:value>
</cas:attribute>
</c:forEach>
</cas:attributes>
</c:if>
ok
搞定。