在一个JAX-RS应用程序中有什么标准的方法可以做到这一点吗?(我们用的是resteasy。)
我读过关于过滤器、拦截器和基本身份验证的所有内容,但我不清楚什么是最好的方法。
这种身份验证可以通过ContainerRequestFilter
来实现,拦截对资源方法的请求。
过滤器将用于从请求中提取API键并验证它。如果API密钥无效,请求将被拒绝。否则,请求将继续到资源方法。
请看下面的代码。ContainerRequestContext
API可用于从HTTP请求中提取信息:
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
// Extract and validate the API key from the request
String apiKey = requestContext.getHeaderString("API-Key");
...
}
}
在身份验证过程中,您必须能够识别正在执行请求的用户。要将此信息传播到资源类/方法,您可以:
SecurityContext
并将其注入资源类/方法。事件
和生产者方法创建一个对象,该对象包含可以注入资源类/方法中的用户标识符。有关这些方法的更多细节,请参阅我上面提到的答案。
为了测试,我尝试下面的代码过滤包含用户的url参数,但是它没有在未经授权的情况下中止请求。最重要的是,我需要以这样的方式来实现它,即只有更新和删除需要用各自的用户名和密码来授权。其他我只是不想过滤的东西。我有一个user类,它具有username和password(加密)属性。因此,如果url包含Users/{userID}的PUT或delete方法,我希望它使用特定用户的用户名和密码进行验证。我
如何用Apache CXF实现这一点?
问题内容: 我正在用TastyPie制作内部API。我有 禁用身份验证规则后,我的API效果很好。启用它后,无论尝试如何,都会收到401(未经授权)的响应。 我敢肯定,一旦你看到它的实际作用,这就是其中的一件事,但与此同时,请告知如何提出请求(GET)。 问题答案: 将用户名和api_key参数添加到你的GET变量中。确保你拥有 设置时,请确保遵循docs的其他说明: ApiKey身份验证 作为要
我正在开发REST webService,我的一些客户机将使用我的webservices,所以为了识别真正的客户机,我决定给每个真正的客户机一个唯一的应用程序令牌。客户机将对这个令牌进行编码,他们将把这个令牌放在请求头中,我已经在我的REST webservices中配置了一个REST过滤器来验证令牌。我不想使用https。我的问题是,任何人都可以从我的客户端站点获取该令牌,并可以使用我的REST
我正在使用生成用户密码的强哈希值。我想登录用户,但不想通过网络以明文形式发送密码,如何检查密码是否正确(没有往返),因为它是加盐的? 我有一个客户端/服务器场景。客户端是台式计算机上的应用程序(不是网站,也不是超文本传输协议服务器)。 我怎样才能做到这一点?我只是走了这么远:我正在客户端上生成salt散列,从中形成一个mcf并将其发送到我的服务器。将mcf保存到数据库。我没有发送密码,只发送了实际
我正在尝试使用私钥和公钥对为sftp服务器设置身份验证。 我已经在本地计算机上设置了带有Bitvise SSH服务器的sftp服务器。我用SSH服务器生成了私钥和公钥。我已经在SSH服务器的主机密钥部分上设置了私钥,并且已经创建了一个虚拟帐户并将公钥设置到该帐户。 谢谢