我在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>
答案 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>