我正在尝试使用BASIC身份验证来保护我的REST API。我这样做是通过在我的web.xml和tomcat-users.xml中定义角色,如下所示:
的web.xml
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<security-constraint>
<display-name>Secure REST Area</display-name>
<web-resource-collection>
<web-resource-name>Secure REST</web-resource-name>
<url-pattern>/rest/api/</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>admin</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>UserDatabaseRealm</realm-name>
</login-config>
Tomcat的users.xml中
<role rolename="admin"/>
<role rolename="user"/>
<user username="admin" password="admin" roles="manager,admin,manager-gui"/>
<user username="user" password="user" roles="user"/>
我正在保护的POST请求注释如下:
@POST
@Path("/validate")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed("admin")
public Response postRequest(Data inputData) throws FileIOException {
.
.
.
}
请求是安全的,当我尝试点击它时,我得到 HTTP状态401 - 未经授权,但是在添加了BASIC身份验证标题后,我们得到了&#39; admin&#39; &#39;管理&#39;用户名/密码,我仍然看到未经授权的消息。
邮递员:
角色配置不正确吗?或者我是否尝试错误地添加Basic Auth标头?
感谢您的帮助。