如何使用REST Webservice(Java Jersey)的基本HTTP认证?
我是REST webservice的新手,刚刚创建了我的第一个webservice.
在我的服务中,用户可以通过简单的形式创建个人资料,提供所需的用户名和密码. 现在如何在用户登录时检查用户凭据? 例如: 但是在REST中,我们不使用cookie,因此下一个选项是HTTP头. 解决方法
客户端
要将凭据发送到API,请使用HTTP授权标头,以基本用户名:password的形式指定凭据.用户名:password字符串必须使用称为Base64的编码方案进行编码.因此,示例头可能如下所示: Authorization: Basic d2lraTpwZWRpYQ== 由于其余规范规定客户端 – 服务器通信应该是无状态的,所以必须在每个请求上包含带有凭据的头文件.通常,您将在客户端使用会话cookie来识别用户,以便他不必在每个请求上输入凭据. 服务器端 要检查Jersey REST服务中的凭据,您需要捕获并拦截所有传入的请求.泽西提供了一个名为ContainerRequestFilters的概念.例如,如果您使用Tomcat,您可以在web.xml中的servlet定义中添加此类型的过滤器,如下所示: <init-param> <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> <param-value>your.package.BasicAuthFilter</param-value> </init-param> 引用的BasicAuthFilter类需要实现Jerseys ContainerRequestFilter接口并覆盖公共ContainerRequest过滤器(ContainerRequest request)方法.在这个方法里面,你将基本做以下事情: >从请求的授权头获取Base64编码的凭证 您可以在this博客文章中找到一个很好的例子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |