4

私は前にその質問をしましたが、答えはありませんでした。私の質問が明確ではなかったと思うので、もう一度やり直します:

LDAP に対して認証するために CAS を使用しています。

また、DB から属性を取得しています。

<property>
  <list>
    <bean class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver"/>
    <bean class="org.jasig.cas.authentication.principal.CredentialsToLDAPAttributePrincipalResolver">
      <property name="credentialsToPrincipalResolver">
        <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver"/>
      </property>
      <property name="filter" value="(uid=%u)"/>
      <property name="principalAttributeName" value="uid"/>
      <property name="searchBase" value="ou=Users,dc=openiam,dc=com"/>
      <property name="contextSource" ref="contextSource"/>
      <property name="attributeRepository" ref="attributeRepository"/>
    </bean>
  </list>
</property>

データベースから属性を選択するためのエントリ キーは、LDAP から取得したユーザー名です。

<bean class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
            <constructor-arg index="0" ref="dataSource1"/>
            <constructor-arg index="1" value="SELECT * FROM USER_DATA WHERE {0}"/>
            <property name="queryAttributeMapping">
              <map>
                <entry key="username" value="LOGINNAME"/>
                   //here I would like to use diffrenty entry key than username. how?

              </map>
            </property>
            <property name="resultAttributeMapping">
              <map>
                <entry key="ROLE_NAME" value="ROLE_NAME"/>
                <entry key="PERMISSIONS" value="PERMISSIONS"/>
                <entry key="APP_NAME" value="APP_NAME"/>
              </map>
            </property>
          </bean>


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

私の場合、別のエントリ キー (LDAP から取得したもの) を介してデータベースから属性を選択したいと考えています。

例えば:

LDAPにこのレコードがあるとしましょう:

ユーザー名: ジョン

電子メール: john@john.com

認証後、次の方法でデータベースから属性を選択したいと思います: select * from USERS_ATTRS where email={0}

  • {0} は、LDAP から取得された電子メール属性です。

ありがとう。

4

0 に答える 0