1

私は自分のプロジェクトに春のセキュリティを実装することに取り組んでいます。Spring Security が証明書 CN から抽出したユーザー名をuidLDAP サーバー上で使用する必要があります。この問題にアプローチする適切な方法がわかりません。x509 から LDAP オーセンティケーターに CN 値を渡す方法がわかりません。以前にこれをやった人はいますか、何かアイデアはありますか?

注: 証明書全体を LDAP サーバーに渡す必要はありません。証明書は LDAP サーバーに格納されていないためです。CN からのユーザー名だけです。

編集: これは、私の春のセキュリティ xml ファイルの構成の一部です。

<http>
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <anonymous />
    <x509 subject-principal-regex="CN=(.*?)," /> <!-- user-service-ref needed? -->
</http>

<ldap-server id="ldapServer" url="ldap://localhost:389/dc=example,dc=com" manager-dn="cn=manager,dc=example,dc=com" manager-password="myPassword" />

<authentication-manager>
    <ldap-authentication-provider
       user-dn-pattern="uid={0},ou=people"
       user-search-filter="(uid={0})"
       user-search-base="ou=people,dc=example,dc=com"
       group-search-filter="(member={0})"
       group-search-base="ou=groups"
       group-role-attribute="cn" />        
</authentication-manager>
4

1 に答える 1

1

を使用する必要がありますldap-user-service。Spring Security テスト スイートの構成例を次に示します。{0}次に、Spring Security は、LDAP 検索フィルターのマーカーの代わりに、証明書 CN から抽出したユーザー名を自動的に置き換える必要があります。

このldap-authentication-provider要素は、ユーザー名とパスワードを使用してユーザーを認証することを目的としています。これは、コンテナーによる証明書の検証が認証の実行と見なされる X.509 では必要ありません。

Spring Security の X.509 認証フィルターはUserDetailsService、ユーザーの情報をロードするために を必要とするため、構成に が必要です。マニュアルで説明されているように、属性が 1 つしかない場合は使用する必要がないuser-service-refため、宣言を追加するだけldap-user-serviceで十分です。

于 2013-01-29T21:25:33.623 に答える