单点登录JA-SIG研究分析~用户库配置篇

本文详细介绍了如何配置数据库和LDAP以实现CAS认证服务,包括数据库驱动的引入、配置文件的修改、数据源和密码编码器的设置,以及如何进行LDAP认证的配置。同时,文章还展示了如何在部署文件中添加客户端登陆服务配置和属性注册,以实现更加灵活的认证流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、数据库配置
        1.复杂数据库驱动jar文件到cas服务端网站的lib目录下
        2.修改CasServer\WEB-INF\deployerConfigContext.xml文件:
            

<!-- 注释掉如下代码-->
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

        替换成:
        

                <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
                    <property name="sql" value="select PASSWORD_ from ID_USER where NAME_=?"/>
                    <property name="passwordEncoder" ref="passwordEncoder"/>
                    <property name="dataSource" ref="dataSource"/>
                </bean>

        在文件末尾加入:

<!-- 数据源定义 -->
    <bean id="dataSource"
        class
="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${db.driver}" />
        <property name="url" value="${db.url}" />
        <property name="username" value="${db.username}" />
        <property name="password" value="${db.password}" />
    </bean>
    <bean id="passwordEncoder"
        class
="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
        autowire
="byName">
        <constructor-arg value="MD5" />
    </bean>

        在CasServer\WEB-INF\cas.properties文件中添加:

database.hibernate.dialect=org.hibernate.dialect.OracleDialect
#database.hibernate.dialect=org.hibernate.dialect.MySQLDialect
#database.hibernate.dialect=org.hibernate.dialect.HSQLDialect
db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc\:oracle\:thin\:@localhost\:1521\:master
db.username=casusername
db.password=caspwd

     二、LDAP配置
            1.复杂cas-server-support-ldap-3.2.jar文件到cas服务端网站的lib目录下
            2.修改CasServer\WEB-INF\deployerConfigContext.xml文件:
            

<!-- 注释掉如下代码-->
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

 

        替换成:(注意:位置)

<bean
                    
class="com.jihong.cas.adaptors.ldap.BindLdapAuthenticationHandler">
                    <property name="filter" value="uid=%u" />
                    <!-- 基节点 -->
                    <property name="searchBase"
                        value
="OU=单位,O=TJJU" />
                    <property name="contextSource" ref="contextSource" />
                </bean>

文件末尾加入:

<bean id="contextSource"
        class
="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource">
        <property name="password" value="secret" />
        <property name="pooled" value="true" />
        <property name="urls">
            <list>
                <value>ldap://192.168.0.1:389/</value>
            </list>
        </property>
        <!-- property name="userName" value="uid=admin,O=TJJU" /-->
        <property name="baseEnvironmentProperties">
            <map>
                <entry>
                    <key>
                        <value>
                            java.naming.security.authentication
                        </value>
                    </key>
                    <value>simple</value>
                </entry>
            </map>
        </property>
    </bean>

     三、分析deployerConfigContext.xml的其他配置
         1.客户端登陆服务配置:每加入一个客户端网站都需修改这个配置。   

<bean id="serviceRegistryDao"
        class
="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />

        例如:

<bean id="serviceRegistryDao"
        class
="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
        <!-- 注册客户端 -->
        <property name="registeredServices">
            <list>
            <!-- 一个客户端配置 -->
                <bean
                    
class="org.jasig.cas.services.RegisteredServiceImpl" 
                    p:id
="1"
                    p:description
="Tout Nancy 2" 
                    p:serviceId
="*://localhost:8080/**"
                    p:name
="Tout Nancy 2" 
                    p:theme
="nancy2" 
                    p:allowedToProxy
="true"
                    p:enabled
="true" 
                    p:ssoEnabled
="true" 
                    p:anonymousAccess
="false">
                    <!-- 允许的属性 -->
                    <property name="allowedAttributes" value="Name,telephoneNumber,fullName,mail,eduPersonAffiliation,groupMembership"/>
                </bean>
            </list>
        </property>
    </bean>

        2.属性注册:从数据库中读取的属性

 

<bean id="attributeRepository"
        class
="org.jasig.services.persondir.support.StubPersonAttributeDao">
        <property name="backingMap">
            <map>
                <entry key="uid" value="uid" />
                <entry key="eduPersonAffiliation"
                    value
="eduPersonAffiliation" />
                <entry key="groupMembership" value="groupMembership" />
            </map>
        </property>
    </bean>

    例如:从LDAP中读取属性

<bean id="attributeRepository"
        class
="com.jihong.services.persondir.support.ldap.LdapPersonAttributeDao">
        <property name="baseDN" value="OU=单位,O=TJJU" />
        <property name="query" value="(uid={0})" />
        <property name="contextSource" ref="contextSource" />
        <property name="ldapAttributesToPortalAttributes">
            <map>
                <entry key="cn" value="Name" />
                <entry value="Telephone" key="telephoneNumber" />
                <entry value="Full Name" key="fullName" />
                <entry value="Email" key="mail" />
                <entry key="eduPersonAffiliation"
                    value
="eduPersonAffiliation" />
                <entry key="groupMembership" value="groupMembership" />
            </map>
        </property>
    </bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值