ほとんどのページで基本認証を必要とする Web アプリケーション (Servlet 3.0 / Tomcat 7) をアップグレードしています。このアプリケーションには監視サーブレットの小さなセットがあり、どれも保護する必要はありません。私web.xml
の には、現在次のsecurity-constraint
ブロックがあります (プライベート情報はアルファベットの文字に置き換えられています):
<security-constraint>
<display-name>Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>CN=A,OU=B,OU=C,OU=D,DC=E,DC=F</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Unprotected Pages</web-resource-name>
<url-pattern>/health/*</url-pattern>
</web-resource-collection>
</security-constraint>
「ヘルス」パス内には、次の 3 つのエンドポイントがあります。
/health/monitor/status
/health/monitor/version
/health/monitor/version/xml
いずれかのエンドポイントにアクセスしても、version
(予想どおり) 資格情報の入力を求められません。しかし、そのstatus
ページにアクセスすると、ブラウザーに基本認証ボックスが表示されます。「キャンセル」を押すと、通常どおりページをロードできます。同様に、すでにログインしている場合は、ログインの有効期限が切れるまで、ステータス画面で再度プロンプトが表示されることはありません。
これは、安全なコンテンツを にデプロイしないことで解決できることはわかってい/*
ますが、それを移動するには、ハードコードされたパスを変更してテストするのに多くの作業が必要です (非常に古いアプリケーションです)。行う。必要に応じてこれを行うことにオープンですが、安全なコンテンツ パスを変更せずにこれが可能かどうかを確認したかったのです。監視サーブレットのパスは完全に自由です。
これはTomcat 7に関連しているようです-複数のセキュリティ制約が機能していませんが、完全な失敗ではなく、エンドポイントの1つだけが失敗しているため、非常に奇妙です。検索に時間を費やしましたが、私がやっていることはうまくいくように見えます...しかし、うまくいきません。
バージョン 3.0を使用web-app
して、Tomcat 7 にデプロイしています (バージョン 7.0.42 と 7.0.47 を試しました)。私はすでにsecurity-constraint
ブロックの順序を変更しようとしました。
考え?
これが参考のための私の完全なweb.xml
ものです(監視サーブレットはJavaアノテーションを介して管理されるため、存在しないことに注意してください):
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>TPS</display-name>
<servlet>
<servlet-name>CFMLServlet</servlet-name>
<servlet-class>railo.loader.servlet.CFMLServlet</servlet-class>
<init-param>
<param-name>configuration</param-name>
<param-value>/WEB-INF/railo/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AMFServlet</servlet-name>
<servlet-class>railo.loader.servlet.AMFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AttachmentServlet</servlet-name>
<servlet-class>com.package.toolshed.AttachmentServlet</servlet-class>
<init-param>
<param-name>configFilePath</param-name>
<param-value>com/package/toolshed/configuration/tps-config.xml</param-value>
</init-param>
<init-param>
<param-name>configPathParam</param-name>
<param-value>attachment.servlet.pathPrefix</param-value>
</init-param>
<load-on-startup>6</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CFMLServlet</servlet-name>
<url-pattern>*.cfm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CFMLServlet</servlet-name>
<url-pattern>*.cfml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CFMLServlet</servlet-name>
<url-pattern>*.cfc</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AMFServlet</servlet-name>
<url-pattern>/flashservices/gateway/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AttachmentServlet</servlet-name>
<url-pattern>/attachments/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.cfm</welcome-file>
<welcome-file>index.cfml</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>CN=A,OU=B,OU=C,OU=D,DC=E,DC=F</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Unprotected Pages</web-resource-name>
<url-pattern>/health/*</url-pattern>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>TPS</realm-name>
</login-config>
<security-role>
<role-name>CN=A,OU=B,OU=C,OU=D,DC=E,DC=F</role-name>
</security-role>
</web-app>