HttpClient支持哪几种身份验证方案呢?

莱莱  金牌会员 | 2022-8-30 09:26:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 818|帖子 818|积分 2454

转自:
http://www.java265.com/JavaCourse/202204/3172.html
下文笔者讲述HttpClient支持的http身份验证方案,如下所示
服务器认证
  1. httpClient同服务器进行交互,
  2. 必须提供相应的登录凭证,这些凭证通常存储在HttpState实例中,
  3. 可以使用
  4. setCredentials(AuthScope authscope, Credentials cred)
  5. getCredentials(AuthScope authscope)
  6. 设置和查询相应的授权信息
复制代码
提前认证
  1. 为了减少服务器交互的开销,我们可提前设置身份验证
  2. client.getParams().setAuthenticationPreemptive(true);
  3.                   defaultcreds = new UsernamePasswordCredentials("username", "password");
  4. client.getState().setCredentials(new AuthScope("myhost", 80, AuthScope.ANY_REALM), defaultcreds);
  5. 注意事项:
  6.     在一些不受信任的站点中和web应用程序中,我们应谨慎使用默认凭证
  7.         笔者建议非调试模式,应避免使用默认账号和密码
复制代码
代理身份验证
  1. 代理身份验证,应使用
  2. setProxyCredentials(AuthScope authscope, Credentials cred)
  3. getProxyCredentials(AuthScope authscope)
  4. 设置和获取授权信息
复制代码
身份认证方案

基本认证方案
  1. 这是一种最原始且兼容性非常好的身份认证方案,
  2. 它发送给服务器的用户名和密码都是未加密的信息
复制代码
摘要式身份认证加密
  1. 它不通过网络传输用户名和密码,
  2. 而是使用用户名和密码对服务器发送过来的nonce值进行加密,作为服务器凭证传送
  3. 摘要式身份认证需要一个UsernamePasswordCredentials实例
复制代码
NTLM身份认证
  1. NTLM是HttpClient支持的最复杂的身份验证协议
  2. 它是由Microsoft设计的专有协议,是一个未公开可用的规范
  3.   早期的NTLM版本,没有Digest身份验证安全,
  4.   但是这些在 Windows NT 4 的服务包中得到修复,现在此协议被认为比Digest身份验证更安全
  5. NTLM身份验证要求NTCredentials实例可用于服务器的域名或默认凭据
  6. 请注意,由于NTLM不使用领域的概念
  7. 因此HttpClient使用服务器的域名作为领域的名称
  8. 另请注意,提供给NTCredentials的用户名不应以域为前缀
  9.    即:"username"是正确
  10.    而"DOMAIN\username"是不正确的
  11. NTLM与基本身份验证和摘要式身份验证相比
  12. NTLM 的工作方式存在一些显着差异
  13. 这些差异通常由HttpClient处理
复制代码
  1. NTLM 身份验证的工作方式与 HttpClient API的其他身份验证几乎完全相同
  2. 唯一的区别是您需要提供“NTCredentials”而不是“UsernamePasswordCredentials”
  3. (NTCredentials 实际上扩展UsernamePasswordCredentials
  4. 因此如果需要,您可以在整个应用程序中使用 NTCredentials)
  5. NTLM 身份验证的领域是要连接的计算机的域名,
  6. 因为服务器通常有多个引用它们的域名
  7. 只有 HttpClient 连接的域名(由 HostConfiguration 指定)用于查找凭据
  8. 通常建议在最初测试 NTLM 身份验证时,将领域作为默认值传递给 null。
  9. NTLM 对连接而不是请求进行身份验证,因此每次建立新连接时都需要进行身份验证,并且在身份验证期间保持连接打开至关重要
  10. 因此,NTLM 不能同时用于代理和服务器的身份验证,NTLM也不能用于HTTP 1.0连接或不支持HTTP keep-alives的服务器
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表