2014-04-10 55 views
0

我有一種情況,我需要拒絕對未使用的HTTP方法的訪問。
我們在JBoss 4.2上運行,需要登錄。除GET和POST之外,所有其他嘗試訪問都應被拒絕。拒絕訪問j2ee中的HTTP方法

我已經嘗試過下面的web.xml配置,但它沒有幫助。該servlet仍然被調用並返回例如。 DELETE請求上的「訪問被拒絕」。
相反,我預計會返回501: Not implemented
如果我在第一個安全約束中沒有包含任何HTTP方法,那麼用戶會立即得到未經授權的頁面。

<web-app> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Deny most when not logged in</web-resource-name> 
      <url-pattern>/*</url-pattern> 
      <http-method>GET</http-method> 
      <http-method>POST</http-method> 
     </web-resource-collection> 
     <!-- no auth-constraint tag here --> 
    </security-constraint> 

    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Allow methods</web-resource-name> 
     <url-pattern>/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
     <http-method>PUT</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Admin</role-name> 
    </auth-constraint> 
    </security-constraint> 
</web-app> 

任何想法應該如何做?

回答

0

玩不同的可能性和郵差我發現第一個安全約束是黑名單。這裏添加的HTTP的方法是被拒絕的那些和JBoss返回一個403
所以第一安全約束現在看起來是這樣的:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Deny most when not logged in</web-resource-name> 
     <url-pattern>/*</url-pattern> 
     <http-method>PUT</http-method> 
     <http-method>DELETE</http-method> 
    </web-resource-collection> 
    <auth-constraint/> 
</security-constraint>