2014-11-24 73 views
1

我在IBM WebSphere上部署了JAX-RS Web服務,我希望在接收請求(從其他服務器委派)時保護此WS。 因此,我使用basic auth並在BasicAuthSecurityHandler對象上設置用戶名和密碼,並將請求委託給其他服務器。 現在,當其他服務器收到請求時,我使用全局安全下的WAS中的聯合存儲庫並執行身份驗證。jax-rs only認證無授權

如果我在部署描述符中註釋掉auth-constraint,則認證不會發生。 我想只做認證和沒有授權。 我嘗試在Jax-WS方法上使用@PermitAll批註,但授權也在Jax-WS方法執行之前發生。 那麼有什麼辦法可以跳過授權並仍然進行身份驗證?

我沒有任何規則與我的用戶相關聯,所以我想跳過授權。

<security-constraint id="SecurityConstraint_1"> 
    <display-name>RESTSecurity</display-name> 
    <web-resource-collection id="WebResourceCollection_1"> 
     <web-resource-name>DelegateReqComApp</web-resource-name> 
     <description> 
      Protection area for Rest resource /addresses 
     </description> 
     <url-pattern>/rest/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 

    <!-- Authorization Constraint commented out --> 
    <auth-constraint id="AuthConstraint_1"> 
     <description> 
       Used to guard resources under this url-pattern 
     </description> 
     <role-name>iapawas012</role-name> 
    </auth-constraint> 
</security-constraint> 

回答

1

創建auth-constraint和映射iapawas012作用的專題ALL_AUTHENTICATED。它基本上說任何成功認證的用戶都有權調用你的服務。
你可以做到這一點無論是在上Enterprise Application > yourApplication > Security role to user/group mapping Web管理控制檯或通過META-INF文件夾中的EAR綁定文件ibm-application-bnd.xml

<?xml version="1.0" encoding="UTF-8"?> 
<application-bnd 
    xmlns="http://websphere.ibm.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-application-bnd_1_2.xsd" 
    version="1.2"> 

    <security-role name="iapawas012"> 
     <special-subject type="ALL_AUTHENTICATED_USERS" /> 
    </security-role> 
</application-bnd> 
+0

非常感謝你,能解決問題。 – user2608576 2014-11-25 08:07:27