大家。 我在保护REST Web服务时遇到问题。它是Java EE Web应用程序的一部分。为了保护页面,我使用了login-config标签并设置了“FORM”身份验证。现在我不知道如何保护Web服务,因为“FORM”不适合它,我不能为app提供两个login-config标签。我考虑分成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状态码)。在登录资源中,您可以使用重定向查询参数在成功登录后重定向回原始页面。