テスト サーバーで LDAP を介して Active Directory に対して正常に認証できる動作中の概念実証アプリケーションがありますが、運用アプリケーションは TLS を介して認証する必要があります。ドメイン コントローラーは、TLS を介して開始されない接続をすべて閉じます。
私は Eclipse に LDAP ブラウザーをインストールしました。確かに TLS を使用して自分自身としてバインドできますが、アプリケーションで TLS を使用する方法を一生理解できません。
ldap.xml :
<bean id="ldapAuthenticationProvider"
class="my.project.package.OverrideActiveDirectoryLdapAuthenticationProvider">
<!-- this works to authenticate by binding as the user in question -->
<constructor-arg value="test.server"/>
<constructor-arg value="ldap://192.168.0.2:389"/>
<!-- this doesn't work, because the server requires a TLS connection -->
<!-- <constructor-arg value="production.server"/> -->
<!-- <constructor-arg value="ldaps://192.168.0.3:389"/> -->
<property name="convertSubErrorCodesToExceptions" value="true"/>
</bean>
OverrideActiveDirectoryLdapAuthenticationProvider
ActiveDirectoryLdapAuthenticationProvider
何らかの理由で指定されているSpring のクラスのコピーを拡張するオーバーライド クラスfinal
です。オーバーライドする理由は、パーミッション/権限がユーザー オブジェクトに入力される方法をカスタマイズすることに関係しています (関連するグループのグループ メンバーシップを使用してユーザーのパーミッションを構築するか、AD ユーザー オブジェクトのフィールドから読み取ります)。その中で、私はメソッドをオーバーライドしているだけですが、メソッドまたは場合によってはメソッドloadUserAuthorities()
もオーバーライドする必要があるのではないかと思います。bindAsUser()
doAuthentication()
XML と 1 つのオーバーライド クラスは、Spring に作業を任せるのではなく、私のアプリケーションによって認証が管理されている唯一の 2 つの場所です。TLSを有効にするためにDefaultTlsDirContextAuthenticationStrategy
クラスを拡張する必要があるいくつかの場所を読みましたが、どこに接続すればよいですか? 名前空間ソリューションはありますか? まったく別のことをする必要がありますか (つまり、Spring の使用を放棄し、ActiveDirectoryLdapAuthenticationProvider
代わりに を使用しますLdapAuthenticationProvider
)?
どんな助けでも大歓迎です。