【问题标题】:Challenge for realm in HttpUnitHttpUnit 领域的挑战
【发布时间】:2011-05-16 23:19:32
【问题描述】:

HttpUnit API for webclient 表示“仅在对指定领域提出挑战时才发送授权标头”。在这种情况下,挑战是什么意思? HttpUnit 如何识别挑战?

【问题讨论】:

    标签: http-unit


    【解决方案1】:

    这是指 HTTP 身份验证的工作方式:

    当访问受保护的 URL 时(第一次,请求中没有包含凭据),服务器将发回一个响应,其状态代码为 401 UnauthorizedWWW-Authenticate 标头设置为类似 @ 987654326@。这表示给定 URL 需要基本身份验证,并且领域名为“我的领域”。这就是挑战 - 服务器通知用户代理它尝试访问的 URL 需要身份验证,并且它应该发回用户凭据。用户代理通常会提示用户输入凭据,然后重试请求,这次将 Authorization 标头设置为 Basic rXflcjMwYXxz 之类的东西,其中第二部分是 Base64 编码的用户名和密码对。

    如果是您链接到的 HttpUnit 方法,您会看到它需要一个领域、用户名和密码。我想当访问 URL 时,如果它从服务器返回 401(挑战),它会将您传递给它的领域与响应中的领域进行比较;如果匹配,它将尝试使用提供的用户名和密码进行身份验证。

    参考资料:

    【讨论】:

      【解决方案2】:

      当服务器响应 401 错误时,HttpUnit 会抛出 AuthorizationRequiredException。我们可以使用异常的getParameter("realm")来获取realm,然后用这个realm名称再次发送请求。

      【讨论】:

      • 我有点困惑 - 这似乎无法回答您自己的问题 在这种情况下,challenge 是什么意思? HttpUnit 如何识别挑战?。这似乎是如何使用 HTTPUnit 获得领域名称? 我认为我的帖子回答了你原来的问题。
      • 当然,你的帖子回答了这个问题,我已经赞成这个问题。猜猜,我想说的是,您可以使用此方法从 401 响应中识别挑战并获取所需信息。
      猜你喜欢
      • 1970-01-01
      • 2022-07-12
      • 2013-12-21
      • 2014-12-21
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2017-06-23
      相关资源
      最近更新 更多