2

MySQL データベースを備えた tomcat 7 で CAS 3 Spring 3.2 と Spring Security 3.2 を実行しています。

MySQL データベースと CAS を使用してユーザーを認証し、成功した後に属性を渡します。これらの詳細は、「sso」と呼ばれるデータベースから取得します。

<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">

    <constructor-arg index="0" ref="dataSource"/>
    <constructor-arg index="1" value="select * from user where {0}" />
    <property name="queryAttributeMapping">
        <map>
            <entry key="username" value="user_name" />
        </map>
    </property>

    <property name="resultAttributeMapping">
        <map>
            <entry key="user_name" value="username" />
            <entry key="full_name" value="fullname" />
        </map>
    </property>
</bean>

その後、これらの属性からユーザー名を取得し、「app」と呼ばれるアプリケーション固有のデータベースに移動します。

したがって、認証が成功した後に CAS からユーザー名を取得し、データベースからその役割を取得します。

どうすればそれを正しく行うことができますか?

アップデート

これまでに試したことはわかりましたが、それが有効かどうかはわかりません。

私は実装し、 myと Implementsを拡張UserDetailsServiceする を作成しました。次に、 my を使用してカスタム作成クラスをロードしました。UserEntityDetailsUserEntityUserDetailsUserDetailsService

次に、XMLでこれを作成しました

<security:authentication-manager alias="authenticationManager">
        <security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
    </security:authentication-manager>

これは正しい方法ですか?

4

1 に答える 1

1

私があなたの質問を誤解していない限り、あなたが求めているのは通常の使用パターンです - は、CAS ではなくローカル データベースからロールをロードするCasAuthenticationProviderように構成されています。UserDetailsService

CAS のサンプル アプリケーション構成を見ると、 userServiceBean を、アプリケーション固有のデータベースからユーザー情報をロードする独自の実装に置き換えるだけです。

于 2013-11-07T14:00:49.157 に答える