【问题标题】:Securing REST web service in GlassFish在 GlassFish 中保护 REST Web 服务
【发布时间】:2010-12-27 17:28:21
【问题描述】:

每个人。 我在保护我的 REST Web 服务时遇到问题。它是 Java EE Web 应用程序的一部分。为了保护我使用 login-config 标签并设置“FORM”身份验证的页面。现在我不知道如何保护 Web 服务,因为“FORM”不适合它,而且我不能有两个用于 app.log 的登录配置标签。我考虑过拆分成 2 个应用程序,但认为这不是一个好主意。有什么建议吗?

【问题讨论】:

    标签: web-services authentication jakarta-ee glassfish jersey


    【解决方案1】:

    这里有关于如何使用 NetBeans 创建安全 Web 服务的信息:http://netbeans.org/kb/docs/websvc/wsit.html

    许多 Web 服务提供商使用 api 密钥来验证对服务的访问。您可能需要考虑为您的服务做类似的事情。

    【讨论】:

      【解决方案2】:

      REST API 有一个单独的子路径是很常见的 - 这样您就可以将身份验证约束指定为特定于您的应用程序的 URL,并且对于与您的 REST API 对应的 URI 使用 jersey OAuth 过滤器或其他东西实现身份验证否则。

      如果您的应用程序都是用 Jersey 编写的,并且您希望为 REST 客户端和浏览器公开完全相同的 URI(并仅根据请求的媒体类型进行区分),您可以使用“登录”URL(用于显示登录页面)并且只有您可以使用 FORM 身份验证进行保护。然后,您将再次添加 Jersey OAuth 过滤器(或其他身份验证过滤器),除非请求中有 OAuth 标头,否则该过滤器不会启动,以及另一个过滤器,您将在其中检查 ContainerRequest.getUserPrincipal() 是否为空。如果它为空,您可以返回 Response.seeOther(UriBuilder.fromPath("/login").queryParam("redirect", request.getAbsolutePath()).build()).build() - 这将重定向到登录(对于 oauth,这不会启动,因为 oauth 请求会成功,或者之前的过滤器会失败并返回 Unauthorized 或 Bad Request 状态代码) .在登录资源中,您可以在成功登录后使用重定向查询参数重定向回原始页面。

      【讨论】:

        猜你喜欢
        • 2015-06-16
        • 2012-09-10
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 2014-08-16
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        相关资源
        最近更新 更多