私はずっと壁に頭をぶつけていました。最近、Tomcat を 6.0.18 から 6.0.37 にアップグレードして、セキュリティ チームによるいくつかの脆弱性を修正しました。CAC ログイン機能を除いて、すべて正常に動作します。これらの構成は 6.0.18 では正常に機能しますが、6.0.37 では機能しません (HTTP500 エラーが発生します) ユーザーが CAC でログインすると、サイト プロンプトで CAC 証明書が要求され、ユーザーが証明書を選択すると、ユーザーがログインします。
基本的に、サイトは CAC から証明書を取得し、LDAP で認証して LDAP からユーザー名を取得します。アプリはユーザー名を使用してユーザーを認証し、ログインして使用します。
ユーザー名を認証するには、/process.jsp にアクセスする必要があります。ただし、web.xml では (保護されたページ) に設定されています。
私を正しい方向に向けるのを手伝ってください。本当に感謝しています。
Tomcat 6.0.37 で動作しない理由がわかりません。Tomcat 6.0.37 用に設定する必要がある新しい構成はありますか
以下は、server.xml ファイル内のコネクタと JNDIRealm の構成です。
<Connector port="443"
maxHTTPHeaderSize="8192"
allowUnsafeLegacyRenegotiation="true"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"
enableLookups="false"
disableUploadTimeout="true"
acceptCount="200"
maxThreads="150"
scheme="https"
secure="true"
keystoreFile="C:\Tomcat 6.0\cert\xxxx.keystore"
keystorePass="changeit"
truststoreFile="D:\Sun\SDK\jdk\jre\lib\security\cacerts"
truststorePass="changeit"
clientAuth="false"
sslProtocol="TLS"
ciphers="xxxxxxxxx"
address="0.0.0.0"/>
<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://xxx.xx.xx.xxx/"
alternateURL="ldap://xxx.xx.xx.xxx/"
connectionName="CN=xxxxxx,OU=xxxx Accounts,OU=xxxxx,DC=xxxx,DC=xxxx,DC=local" connectionPassword="MyPassword"
authentication="simple"
referrals="follow"
userSubtree="true"
userBase="OU=xxxxx,DC=xxxx,DC=dhhq,DC=local"
userRoleName="xxx"
userSearch="(altSecurityIdentities={0})" roleBase="CN=xxxxxxx,OU=xxxxxx,OU=Accounts,DC=xxxx,DC=xxxx,DC=local" roleSubtree="true"
roleName="cn"
roleSearch="(member={0})" />
web.xml セキュリティ構成:
<security-constraint>
<web-resource-collection>
<web-resource-name>Myapp</web-resource-name>
<url-pattern>/process.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>User</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>TOMCATLDAP</realm-name>
</login-config>
<security-role>
<role-name>User</role-name>
</security-role>