七、cas 4.2.5 返回更多的用户信息

9 篇文章 2 订阅

1.找到cas server 中的 deployerConfigContext.xml

注释掉   

<!-- <bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao"
        p:backingMap-ref="attrRepoBackingMap" /> -->

 

    <!-- <util:map id="attrRepoBackingMap">

       <entry key="uid" value="uid" />
       <entry key="eduPersonAffiliation" value="eduPersonAffiliation" />

       <entry key="groupMembership" value="groupMembership" />

       <entry>

        <key>

                   <value>memberOf</value>

         </key>

         <list>

              <value>faculty</value>

                <value>staff</value>

               <value>org</value>
        </list>

    </entry>

        </util:map> -->

 

添加代码:

<bean id="attributeRepository"
        class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
        <constructor-arg index="0" ref="dataSource" />
        <constructor-arg index="1"
            value="SELECT username,password,email,userId,sex,telPhone,mobileNumber, contents,sysStatus,sysUpDated,sysBack1,sysBack2,sysBack3 FROMDC_US_USERINFO WHERE {0}" />
        <property name="queryAttributeMapping">
            <map>
                <entry key="username" value="username" />
            </map>
        </property>
        <property name="resultAttributeMapping">
            <map>
                <!--key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值 -->
                <entry key="username" value="username"></entry>
                    <entry key="password" value="password"></entry>
                <entry key="email" value="email"></entry>
                <entry key="userId" value="userId"></entry>
                <entry key="sex" value="sex"></entry>
                <entry key="telPhone" value="telPhone"></entry>
                <entry key="mobileNumber" value="mobileNumber"></entry>
                
                <entry key="contents" value="contents"></entry>
                <entry key="sysStatus" value="sysStatus"></entry>
                <entry key="sysUpDated" value="sysUpDated"></entry>
                <entry key="sysBack1" value="sysBack1"></entry>
                <entry key="sysBack2" value="sysBack2"></entry>
                <entry key="sysBack3" value="sysBack3"></entry>
            
            </map>
        </property>
    </bean>

 

deployerConfigContext.xml的完整代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:sec="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">


    <util:map id="authenticationHandlersResolvers">
        <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
        <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
    </util:map>

    <util:list id="authenticationMetadataPopulators">
        <ref bean="successfulHandlerMetaDataPopulator" />
        <ref bean="rememberMeAuthenticationMetaDataPopulator" />
    </util:list>

    <!-- <bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao"
        p:backingMap-ref="attrRepoBackingMap" /> -->
        
    <!-- <alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler"
        /> -->
    <alias name="personDirectoryPrincipalResolver" alias="primaryPrincipalResolver" />

    <!-- <util:map id="attrRepoBackingMap"> <entry key="uid" value="uid" />
        <entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> <entry
        key="groupMembership" value="groupMembership" /> <entry> <key> <value>memberOf</value>
        </key> <list> <value>faculty</value> <value>staff</value> <value>org</value>
        </list> </entry> </util:map> -->

    <bean id="attributeRepository"
        class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
        <constructor-arg index="0" ref="dataSource" />
        <constructor-arg index="1"
            value="SELECT username,password,email,userId,sex,telPhone,mobileNumber, contents,sysStatus,sysUpDated,sysBack1,sysBack2,sysBack3 FROM DC_US_USERINFO WHERE {0}" />
        <property name="queryAttributeMapping">
            <map>
                <entry key="username" value="username" />
            </map>
        </property>
        <property name="resultAttributeMapping">
            <map>
                <!--key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值 -->
                <entry key="username" value="username"></entry>
                    <entry key="password" value="password"></entry>
                <entry key="email" value="email"></entry>
                <entry key="userId" value="userId"></entry>
                <entry key="sex" value="sex"></entry>
                <entry key="telPhone" value="telPhone"></entry>
                <entry key="mobileNumber" value="mobileNumber"></entry>
                
                <entry key="contents" value="contents"></entry>
                <entry key="sysStatus" value="sysStatus"></entry>
                <entry key="sysUpDated" value="sysUpDated"></entry>
                <entry key="sysBack1" value="sysBack1"></entry>
                <entry key="sysBack2" value="sysBack2"></entry>
                <entry key="sysBack3" value="sysBack3"></entry>
            
            </map>
        </property>
    </bean>



    <alias name="serviceThemeResolver" alias="themeResolver" />

    <alias name="jsonServiceRegistryDao" alias="serviceRegistryDao" />

    <alias name="defaultTicketRegistry" alias="ticketRegistry" />

    <alias name="ticketGrantingTicketExpirationPolicy" alias="grantingTicketExpirationPolicy" />
    <alias name="multiTimeUseOrTimeoutExpirationPolicy" alias="serviceTicketExpirationPolicy" />

    <alias name="anyAuthenticationPolicy" alias="authenticationPolicy" />
    <alias name="acceptAnyAuthenticationPolicyFactory" alias="authenticationPolicyFactory" />

    <bean id="auditTrailManager"
        class="org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager"
        p:entrySeparator="${cas.audit.singleline.separator:|}"
        p:useSingleLine="${cas.audit.singleline:false}" />

    <alias name="neverThrottle" alias="authenticationThrottle" />

    <util:list id="monitorsList">
        <ref bean="memoryMonitor" />
        <ref bean="sessionMonitor" />
    </util:list>

    <alias name="defaultPrincipalFactory" alias="principalFactory" />
    <alias name="defaultAuthenticationTransactionManager" alias="authenticationTransactionManager" />
    <alias name="defaultPrincipalElectionStrategy" alias="principalElectionStrategy" />
    <alias name="tgcCipherExecutor" alias="defaultCookieCipherExecutor" />

    <!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" -->

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>${database.driverClass}</value>
        </property>
        <property name="url">
            <value>${database.url}</value>
        </property>
        <property name="username">
            <value>${database.user}</value>
        </property>
        <property name="password">
            <value>${database.password}</value>
        </property>
    </bean>
    
    <!--  mysql 连接-->
    <!--


    <bean name="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        p:driverClass="${database.driverClass}" p:jdbcUrl="${database.url}" p:user="${database.user}"
        p:password="${database.password}" p:initialPoolSize="${database.pool.minSize}"
        p:minPoolSize="${database.pool.minSize}" p:maxPoolSize="${database.pool.maxSize}"
        p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}" p:checkoutTimeout="${database.pool.maxWait}"
        p:acquireIncrement="${database.pool.acquireIncrement}" p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}"
        p:acquireRetryDelay="${database.pool.acquireRetryDelay}" p:idleConnectionTestPeriod="${database.pool.idleConnectionTestPeriod}"
        p:preferredTestQuery="${database.pool.connectionHealthQuery}"/> -->

        
        
    <!-- <alias name="queryDatabaseAuthenticationHandler" alias="primaryAuthenticationHandler"
        /> <alias name="dataSource" alias="queryDatabaseDataSource" /> -->


    <alias name="searchModeSearchDatabaseAuthenticationHandler"
        alias="primaryAuthenticationHandler" />
    <alias name="dataSource" alias="searchModeDatabaseDataSource" />
</beans>

 

2.cas-server修改casServiceValidationSuccess.jsp文件

 

 

此文件是将用户登录成功后,将信息生成XML传递给客户端,原文件是只包含name信息,所以需要修改,新增获取其他属性的代码如下:

  <!-- 在server验证成功后,这个页面负责生成与客户端交互的xml信息,在默认的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>

 

casServiceValidationSuccess.jsp完整代码:

<%@ page session="false" contentType="application/xml; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationSuccess>
        <cas:user>${fn:escapeXml(principal.id)}</cas:user>
        <c:if test="${not empty pgtIou}">
            <cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
        </c:if>
        <c:if test="${fn:length(chainedAuthentications) > 0}">
            <cas:proxies>
                <c:forEach var="proxy" items="${chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(chainedAuthentications)}" step="1">
                    <cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
                </c:forEach>
            </cas:proxies>
        </c:if>

        
        <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>
    </cas:authenticationSuccess>
</cas:serviceResponse>

 

3.由于我使用shiro ,所以client 中获取代码如下:

   Subject subject = SecurityUtils.getSubject();
   Map attributes = (Map) subject.getPrincipals().asList().get(1);

//获取id

   String userId=(String) attributes.get("userId");

StringtelPhone=(String) attributes.get("telPhone")

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值