【问题标题】:Glassfish Digest AuthenticationGlassfish 摘要身份验证
【发布时间】:2013-08-29 21:21:56
【问题描述】:

我想使用 JAX-RS 构建 RESTful 网络服务(Jersey + Jackson,Jackson 用于 JSON 的生产)。

我使用 Glassfish 4.0 作为服务器,使用 netbeans 作为 IDE。

网络服务工作正常,但目前我没有任何身份验证。

所以现在我正在考虑对密码进行哈希处理的摘要式身份验证,这样您就不需要以纯文本形式传输密码。另外我想使用https,以便对数据进行加密。

我理解了这个理论。但我不知道如何在 Netbeans 中使用 Glassfish 做到这一点。

我在 glassfish 的管理控制台中看到了一些教程。但是没有办法只在netbeans中做到这一点吗?我不能在部署应用程序时创建的 netbeans 中定义一个领域吗?

在创建领域和东西之后。我想我需要在我的所有资源(WebServices)中注入某种经过身份验证的“用户”对象。但我以前从未这样做过。我正在寻找一个很好的教程,它描述了我如何设置摘要身份验证和注入槽 netbeans 可以使用 netbeans 做到这一点,以便我能很好地理解它。

【问题讨论】:

    标签: glassfish jax-rs java-ee-6 java-ee-7 jersey-2.0


    【解决方案1】:

    注意:我的回答不包括与使用 Netbeans 配置容器身份验证相关的部分问题。

    我知道您只需要实现服务器端(您不需要客户端部分)。

    在服务端有两部分需要解决:认证和授权。

    身份验证

    如果您决定使用 HTTP 基本身份验证、HTTP 摘要式身份验证或客户端证书身份验证,则需要让 Glassfish 执行身份验证。如果您想使用 SSL 进行传输,我宁愿使用 HTTP Basic 身份验证。密码以明文形式发送,但通信是加密的。优点是这种身份验证更容易为客户端实现。要定义 HTTP 基本身份验证,您可以使用应用程序的 web.xml 并定义“security-constraint”和“login-config”标签。例如:

    <security-constraint>
        <web-resource-collection>
            <url-pattern>/rest/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>customer</role-name>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>my-defaul-realm</realm-name>
    </login-config>
    

    这不是 Glassfish 特定的解决方案;它也可以在其他应用服务器上工作。容器将执行身份验证,并且可以在 javax.ws.rs.core.SecurityContext 中的 JAX-RS 应用程序中访问此信息。

    授权

    您现在可以使用 SecurityContext 来提取用户 Principal、检查用户角色等。此外,Jersey 提供了使用注释 @RolesAllowed("...") 和 @PermitAll 来定义访问权限的功能到资源(注释来自 javax.annotation.security 包)。您需要将 RolesAllowedDynamicFeature 注册到 Jersey 以启用对这些注释的处理。例如,您可以定义以下资源方法:

    @RolesAllowed("admin")
    @GET
    public String get() {
      return "admin private resource"; 
    }
    

    这将导致只有具有“admin”角色的用户才能执行 get() 方法。

    您可以查看 Jersey 文档了解更多详细信息(安全章节): https://jersey.java.net/documentation/latest/security.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多