在GlassFish中保护REST Web服务

时间:2010-12-27 17:28:22

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

REST API通常有一个单独的子路径 - 这样你就可以只为你的应用程序特定的URL指定auth约束,并使用jersey OAuth过滤器或其他东西为你的REST API实现身份验证对应的URI其他

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

相关问题