You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于BASIC认证的Jersey REST API权限配置技术问询

使用BASIC认证保护Jersey REST API(基于web.xml和Tomcat配置)

我来帮你把配置补全并梳理清楚,这样你就能顺利通过BASIC认证保护你的Jersey REST API了。结合你给出的部分配置,完整的实现步骤如下:

1. 完善web.xml配置

首先把web.xml中关于认证和Servlet映射的部分补全,完整代码如下:

<!-- Jersey Servlet配置 -->
<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <!-- 注意:Jersey 2.x用这个类,1.x用com.sun.jersey.spi.container.servlet.ServletContainer -->
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>你的REST接口所在的包路径</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<!-- 安全约束:保护/rest/*路径下的所有资源 -->
<security-constraint>
    <display-name>Secure REST Area</display-name>
    <web-resource-collection>
        <web-resource-name>Secure REST</web-resource-name>
        <url-pattern>/rest/*</url-pattern>
        <!-- 可指定要保护的HTTP方法,不写则默认所有方法 -->
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <!-- 指定允许访问的角色,多个角色用逗号分隔 -->
        <role-name>rest_user</role-name>
    </auth-constraint>
</security-constraint>

<!-- 登录配置:指定BASIC认证方式 -->
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>REST API Realm</realm-name>
</login-config>

<!-- 声明要使用的安全角色 -->
<security-role>
    <role-name>rest_user</role-name>
</security-role>

关键部分说明:

  • <security-constraint>:定义了需要保护的资源路径(/rest/*),以及允许访问该资源的角色(rest_user),你也可以添加多个<http-method>来限制特定请求方法的访问权限。
  • <login-config>:明确指定认证方式为BASIC,realm-name会在浏览器弹出的认证框中显示,方便用户识别。
  • <security-role>:这里声明的角色必须和Tomcat用户配置里的角色完全一致,否则认证会失败。

2. 配置Tomcat的用户与角色

找到Tomcat安装目录下的conf/tomcat-users.xml,添加带有对应角色的用户:

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
    <!-- 添加你的用户和角色 -->
    <user username="admin" password="admin123" roles="rest_user"/>
    <user username="test_user" password="test123" roles="rest_user"/>
</tomcat-users>

注意事项:

  • 生产环境中绝对不要使用明文密码,可以用Tomcat自带的digest.bat(Windows)或digest.sh(Linux)工具生成加密后的密码,例如:
    # 生成SHA-256加密的密码,算法可指定
    ./digest.sh -a SHA-256 admin123
    
    然后把生成的密文替换到password属性中。

3. 测试认证效果

配置完成后重启Tomcat,用以下方式测试:

  • 浏览器访问:直接访问http://localhost:8080/你的项目名/rest/xxx,浏览器会弹出BASIC认证框,输入正确的用户名密码即可访问接口。
  • curl命令:
    curl -u admin:admin123 http://localhost:8080/你的项目名/rest/xxx
    

如果输入的用户名密码不匹配或者用户没有对应的rest_user角色,会返回401 Unauthorized状态码,说明认证生效了。

内容的提问来源于stack exchange,提问作者colmulhall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:29:23