java web Jersey_如何使用REST Webservice(Java Jersey)的基本HTTP认证?

客户端

要将凭据发送到API,请使用HTTP授权标头,以基本用户名:password的形式指定凭据.用户名:password字符串必须使用称为Base64的编码方案进行编码.因此,示例头可能如下所示:

Authorization: Basic d2lraTpwZWRpYQ==

由于其余规范规定客户端 – 服务器通信应该是无状态的,所以必须在每个请求上包含带有凭据的头文件.通常,您将在客户端使用会话cookie来识别用户,以便他不必在每个请求上输入凭据.

服务器端

要检查Jersey REST服务中的凭据,您需要捕获并拦截所有传入的请求.泽西提供了一个名为ContainerRequestFilters的概念.例如,如果您使用Tomcat,您可以在web.xml中的servlet定义中添加此类型的过滤器,如下所示:

com.sun.jersey.spi.container.ContainerRequestFilters

your.package.BasicAuthFilter

引用的BasicAuthFilter类需要实现Jerseys ContainerRequestFilter接口并覆盖公共ContainerRequest过滤器(ContainerRequest request)方法.在这个方法里面,你将基本做以下事情:

>从请求的授权头获取Base64编码的凭证

解码它们(即使用javax.xml.bind.DatatypeConverter.parseBase64Binary())

>使用您的UserDao(或其他数据源提供程序)来检查凭据是否有效

>返回状态代码401如果验证失败,则未经授权(即抛出新的WebApplicationException(Status.UNAUTHORIZED))

>如果凭据有效,只需返回请求,将其委托给负责处理它的泽西资源

您可以在this博客文章中找到一个很好的例子.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值