Saturday, February 08, 2014

[repost ]HttpClient 教程 (四) HTTP认证

original:http://ift.tt/1eEkMP3 第四章 HTTP认证 HttpClient提供对由HTTP标准规范定义的认证模式的完全支持。HttpClient的认证框架可以扩展支持非标准的认证模式,比如NTLM和SPNEGO。 4.1 用户凭证 任何用户身份验证的过程都需要一组可以用于建立用户身份的凭据。用户凭证的最简单的形式可以仅仅是用户名/密码对。UsernamePasswordCredentials代表了一组包含安全规则和明文密码的凭据。这个实现对由HTTP标准规范中定义的标准认证模式是足够的 UsernamePasswordCredentials creds = new UsernamePasswordCredentials(“user”, “pwd”); System.out.println(creds.getUserPrincipal().getName()); System.out.println(creds.getPassword()); 输出内容为: user pwd NTCredentials是微软Windows指定的实现,它包含了除了用户名/密码对外,一组额外的Windows指定的属性,比如用户域名的名字,比如在微软的Windows网络中,相同的用户使用不同设置的认证可以属于不同的域。 NTCredentials creds = new NTCredentials(“user”, “pwd”, “workstation”, “domain”); System.out.println(creds.getUserPrincipal().getName()); System.out.println(creds.getPassword()); 输出内容为: DOMAIN/user pwd 4.2 认证模式 AuthScheme接口代表了抽象的,面向挑战-响应的认证模式。一个认证模式期望支持如下的功能: 解析和处理由目标服务器在对受保护资源请求的响应中发回的挑战。 提供处理挑战的属性:认证模式类型和它的参数,如果可用,比如这个认证模型可应用的领域。 对给定的凭证组和HTTP请求对响应真实认证挑战生成认证字符串。 要注意认证模式可能是有状态的,涉及一系列的挑战-响应交流。HttpClient附带了一些AuthScheme实现: Basic(基本):Basic认证模式定义在RFC 2617中。这个认证模式是不安全的,因为凭据以明文形式传送。尽管它不安全,如果用在和TLS/SSL加密的组合中,Basic认证模式是完全够用的。 Digest(摘要):Digest认证模式定义在RFC 2617中。Digest认证模式比Basic有显著的安全提升,对不想通过TLS/SL加密在完全运输安全上开销的应用程序来说也是很好的选择。 NTLM:NTLM是一个由微软开发的优化Windows平台的专有认证模式。NTLM被认为是比Digest更安全的模式。这个模式需要外部的NTLM引擎来工作。要获取更多详情请参考包含在HttpClient发布包中的NTLM_SUPPORT.txt文档。 4.3 HTTP认证参数 有一些可以用于定制HTTP认证过程和独立认证模式行为的参数: ‘http.protocol.handle-authentication’:定义了是否认证应该被自动处理。这个参数期望的得到一个java.lang.Boolean类型的值。如果这个参数没有被设置,HttpClient将会自动处理认证。 ‘http.auth.credential-charset’:定义了当编码用户凭证时使用的字符集。这个参数期望得到一个java.lang.String类型的值。如果这个参数没有被设置,那么就会使用US-ASCII。 4.4 认证模式注册表 HttpClient使用AuthSchemeRegistry类维护一个可用的认证模式的注册表。对于每个默认的下面的模式是注册过的: Basic:基本认证模式 Digest:摘要认证模式 请注意NTLM模式没有对每个默认的进行注册。NTLM不能对每个默认开启是应为许可和法律上的原因。要获取更详细的关于如何开启NTLM支持的内容请看这部分。 [...]



via WordPress http://ift.tt/1iJw5Ed

Labels:

0 Comments:

Post a Comment

<< Home