BASIC Auth Jersey REST API

时间:2018-04-02 01:11:47

标签: rest tomcat jersey jax-rs basic-authentication

我正在尝试使用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;用户名/密码,我仍然看到未经授权的消息。

邮递员:

enter image description here

角色配置不正确吗?或者我是否尝试错误地添加Basic Auth标头?

感谢您的帮助。

0 个答案:

没有答案