2011-10-27 9 views
0

Webアプリケーションには、ユーザーがWebへのアクセスを認証されていないときに例外Javaファイルを呼び出す自宅セキュリティフィルタSCMIS Security Filterがあります。依存関係のJARファイルにあるappです。このフィルタはweb.xmlファイルで定義されていますが、この特定の例外が呼び出されたときにこのセキュリティフィルタをバイパスして、同じWebアプリケーションの特定のJSPページにユーザーをリダイレクトできるかどうかを知りたい場合は、 ?ここでweb.xmlでセキュリティフィルタをバイパスするにはどうすればいいですか?

は、web.xmlです:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 

    <display-name>SCMIS</display-name> 

    <filter> 
     <filter-name>Waffle SecurityFilter</filter-name> 
     <filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class> 
    </filter> 

    <filter> 
     <display-name>SCMIS Security Filter</display-name> 
     <filter-name>SCMISSecurityFilter</filter-name> 
     <filter-class>org.texashealth.scmis.security.Filter</filter-class> 
    </filter> 

    <filter> 
     <display-name>Stripes Filter</display-name> 
     <filter-name>StripesFilter</filter-name> 
     <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class> 
     <init-param> 
      <param-name>ActionResolver.Packages</param-name> 
      <param-value>org.texashealth.scm.stripes,org.texashealth.scmis.stripes</param-value> 
     </init-param> 
     <init-param> 
      <param-name>Extension.Packages</param-name> 
      <param-value>org.texashealth.scmis.stripes.ext</param-value> 
     </init-param> 
     <init-param> 
      <param-name>PopulationStrategy.Class</param-name> 
      <param-value>net.sourceforge.stripes.tag.BeanFirstPopulationStrategy</param-value> 
     </init-param> 
    </filter> 

    <filter-mapping> 
     <filter-name>Waffle SecurityFilter</filter-name> 
     <url-pattern>*.jsp</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

    <filter-mapping> 
     <filter-name>Waffle SecurityFilter</filter-name> 
     <url-pattern>*.action</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

    <filter-mapping> 
     <filter-name>SCMISSecurityFilter</filter-name> 
     <url-pattern>*.jsp</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

    <filter-mapping> 
     <filter-name>SCMISSecurityFilter</filter-name> 
     <url-pattern>*.action</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

    <filter-mapping> 
     <filter-name>StripesFilter</filter-name> 
     <url-pattern>*.jsp</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
     <dispatcher>FORWARD</dispatcher> 
    </filter-mapping> 

    <filter-mapping> 
     <filter-name>StripesFilter</filter-name> 
     <servlet-name>StripesDispatcher</servlet-name> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

    <servlet> 
     <display-name>Stripes Dispatcher</display-name> 
     <servlet-name>StripesDispatcher</servlet-name> 
     <servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>StripesDispatcher</servlet-name> 
     <url-pattern>*.action</url-pattern> 
    </servlet-mapping> 

    <error-page> 
     <exception-type>java.lang.Exception</exception-type> 
     <location>/error.jsp</location> 
    </error-page> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

フィルターからJARに呼び出される例外方法は次のとおりです。

私を育てるとき、今、私はループ内で立ち往生しています
public UnauthorizedException(final HttpServletResponse response, final String userName) throws IOException { 
    //response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "User: " + userName.toUpperCase() + " is not authorized to access this resource"); 
    response.sendRedirect("/nau/unAuthorizedUser.jsp"); 
} 

ローカルのTomcatサーバーを使用しています。なぜなら、Webアプリケーションへのアクセスのためにユーザーを認証しようとしているセキュリティフィルターにいるため、unAuthorizedUser.jspページにユーザーを取得できません。

お手数ですが、ご了承ください。

答えて

1

今すぐページを含む*.jspのすべてのリクエストを傍受するように、セキュリティフィルタを*.jspにマッピングしました。これを解決するには、2つの方法が基本的にあります。

  1. あなたはそれがunAuthorizedUser.jsp要求と一致していないなど、あなたのフィルターのマッピングを変更する必要があります。たとえば、/app/*に変更し、すべての制限付きページを/appフォルダに配置します。

  2. あなたはunAuthorizedUser.jspが要求され、その場合、認可チェックをスキップし、フィルターチェーンを継続されているかどうかを確認するためにrequest.getRequestURI()に余分なifチェックを追加する必要があります。

+0

お手数をおかけしていただきありがとうございます。試してみます。 – Melinda

関連する問題