認証のために LDAP を介して Active Directory に正常に接続し、ldap.xml で以下を使用して、カスタム機関ポピュレーターを呼び出しました。
<bean id="ldapAuthenticationProvider"
class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<constructor-arg ref="ldapBindAuthenticator"/>
<constructor-arg ref="ldapAuthoritiesPopulator"/>
</bean>
<bean id="ldapBindAuthenticator"
class="org.springframework.security.ldap.authentication.BindAuthenticator">
<constructor-arg ref="ldapServer"/>
<property name="userSearch" ref="ldapSearch"/>
</bean>
<bean id="ldapSearch"
class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg value="CN=Users"/>
<constructor-arg value="(sAMAccountName={0})"/>
<constructor-arg ref="ldapServer"/>
</bean>
<bean id="ldapAuthoritiesPopulator"
class="my.project.package.ActiveDirectoryLdapAuthoritiesPopulator"/>
<bean id="ldapServer"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldap://192.168.0.2/dc=test,dc=server"/>
<property name="userDn" value="ldap@test.server"/>
<property name="password" value="ldap"/>
<property name="baseEnvironmentProperties">
<map>
<entry key="java.naming.referral">
<value>follow</value>
</entry>
</map>
</property>
</bean>
これは正常に機能し、ユーザーのグループ メンバーシップに基づいてユーザーの承認を確認できますが、組み込みの Active Directory LDAP 認証プロバイダーを使用してこれを行うことをお勧めします。
<bean id="ldapAuthenticationProvider"
class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="test.server"/>
<constructor-arg value="ldap://192.168.0.2:389"/>
<property name="convertSubErrorCodesToExceptions" value="true"/>
</bean>
上記の問題は、カスタム権限ポピュレーターが (明らかに) 呼び出されないことです。そのため、ユーザーを認証することはできますが (これは上記で動作します)、グループ (承認を決定する必要があります) がありません。
これは簡単な質問だと思いますが、私の人生では、ここでも他の場所でも答えを見つけることができません. ActiveDirectoryLdapAuthenticationProvider クラスを拡張し、そこから権限ポピュレータを呼び出す必要がありますか?
(このサイトが何年にもわたって私に与えてくれたすべての助けに感謝します。このサイトの有効性は、私が最近になってアカウントを作成しようとしたという事実によって測ることができます。これが私の最初の質問です。よろしくお願いします。あなたの助け。)