jax-rs只有身份验证没有授权

时间:2014-11-24 17:36:44

标签: websphere jax-rs restful-authentication ibm-was

我在IBM WebSphere上部署了JAX-RS Web服务,我希望在收到请求(从其他服务器委派)时保护此WS。 所以我使用基本身份验证并在BasicAuthSecurityHandler对象上设置用户名和密码,并将请求委托给其他服务器。 现在,当其他服务器收到请求时,我在全局安全性下使用WAS中的Federated存储库并进行身份验证。

如果我在部署描述符中注释掉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 个答案:

答案 0 :(得分:1)

创建auth-constraint并将iapawas012地图映射到特殊主题ALL_AUTHENTICATED。它基本上表示任何成功通过身份验证的用户都有权调用您的服务 您可以在Enterprise Application > yourApplication > Security role to user/group mapping上的Web管理控制台中或通过ibm-application-bnd.xml文件夹中EAR中的绑定文件META-INF执行此操作:

<?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>