リスト、
私は実際にこのトピックについて広範囲に検索しましたが、a) 何かを構成する方法がわからない、および/または b) JNDI レルムが実際に行うべきことをよく理解していません。jdk 1.7.0_15 で Tomcat 7.0.32 を使用しています。
これが私がやりたいことです。私は、PKI ユーザー証明書を使用する顧客と仕事をしています。ユーザー証明書には、「Joe Smith」のような cn があります。私ができる必要があるのは、LDAP でこの CN を検索し、「jsmith23」のようなユーザー ID を取得して、プリンシパル ユーザーを要求ヘッダーに入力することです。この理由は、特に getRemoteUser() を呼び出すアプリケーションを Tomcat にデプロイしており、この ID (「jsmith23」など) を正しく入力する必要があるためです。このアプリケーションは、別のサード パーティ製ツールの Web アダプターのようなものであり、その結果、LDAP が再度チェックされます。ただし、このユーザー ID でなければなりません。
多くのことを試しましたが、LDAP ルックアップを通過できないようです。私のserver.xmlでは、次のようになります。
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="c:/tomcat7/pki/keystore.jks" keystorePass="changeit"
truststoreFile="c:/tomcat7/pki/cacerts.jks" truststorePass="changeit" />
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://servername:3268"
allRolesMode="authOnly"
connectionName="cn=DC Services,OU=Generic,OU=Users,OU=Managed Objects,DC=domain,DC=com"
connectionPassword="mypassword"
userBase="DC=domain,DC=com"
userSubtree="true"
userSearch="cn={0}"
userRoleName="memberOf" />
私のアプリケーションの web.xml ファイルは次のようになります。
<security-constraint>
<web-resource-collection>
<web-resource-name>ArcGIS Web Adapter</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>ArcGIS Web Adapter</realm-name>
</login-config>
<security-role>
<role-name>*</role-name>
</security-role>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
私が抱えている問題は、何を試してもこのエラーが発生し続けることです。
message 指定された資格情報で認証できません 説明 この要求には HTTP 認証が必要です。
証明書の入力を求めるプロンプトが表示されるので、それがうまくいくことはわかっています。localhost ログ ファイルには次のように表示されます。
FINE: Realm.authenticate() が false を返しました
ただし、パスワードを変更すると、サイトにまったくアクセスできなくなるため、適切に接続していることはわかっています。
私の質問の 1 つは、JNDI レルムのセットアップの結果がどうなるかということだと思います。LDAP でユーザー名の CN を検索する場合は、どうすればよいでしょうか? 私のWebアプリケーションに進むために必要な認証を提供すると思いますか? すべてをBASICに変更し、認証にユーザー名/パスワードを使用すると、完全に機能します。しかし、CLIENT-CERT と LDAP ルックアップを使用すると、必要なことを達成できないようです。
証明書 CN に基づいてユーザーの ID を検索し、その後の getTemoteUser() への呼び出しが正しく機能するように、http 要求にプリンシパル ユーザーを入力するプロセスが必要です。
どんな助けでも大歓迎です。