邮差摘要授权请求返回401 Unauthrized

时间:2016-07-29 10:40:46

标签: postman http-status-code-401 digest

我在Chrome 51.0.2704.63中使用Postman 4.4.1。我已经使用Tomcat6设置了一个web项目,web.xml就像:

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>
                My App
            </web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>tomcat</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>DIGEST</auth-method>  <!-- DIGEST here -->
        <realm-name>My Realm</realm-name>
    </login-config>
</web-app>

当我访问http://localhost:8080/simple-web/使用我的本地浏览器时,会弹出一个窗口让我输入用户名和密码。填充后,效果很好。 当我使用Postman时,我在授权页面输入用户名和密码,然后选择带有Digest Auth的类型。它总是显示给我401 Unauthrized。 我可以看到标题:

Cache-Control →no-cache
Content-Length →954
Content-Type →text/html;charset=utf-8
Date →Fri, 29 Jul 2016 10:26:20 GMT
Expires →Thu, 01 Jan 1970 08:00:00 CST
Pragma →No-cache
Server →Apache-Coyote/1.1
WWW-Authenticate →Digest realm="My Realm", qop="auth", nonce="dcb71e7d6766f85c3f233b7b74e42423", opaque="4894d1ece1380278a451585e9b548e21"

有人知道原因以及如何解决它吗?

2 个答案:

答案 0 :(得分:0)

从一开始我使用了一个带有摘要身份验证的两步流程构建请求,构建来自Firebug的请求并发送它并将401副本的nonce,有时不透明地复制到摘要字段中并重新发送以获得成功。 在论坛上的讨论让我相信它仍然是一个问题。我正在使用5.1.2 Windows App。 当我粘贴网址并获得预期的响应时,我模拟了我在Firebug中看到的初始请求。

答案 1 :(得分:0)

最新答案,但由于我的团队对此也很挣扎,因此请将其发布在这里,而这只是仔细阅读文档的问题。

根据Postman documentation

(..)服务器使用一些详细信息进行响应,包括只能使用一次(一次)的数字,领域值和401未经授权的响应。然后,您将发送回加密的数据数组,其中包括用户名和密码以及在第一个请求中从服务器接收到的数据。

由于在提供的输出中已经可见,因此确实为您提供了随机数,qop和不透明值。因此,在最初的请求获得401响应之后,您将创建另一个请求,该请求与上一个请求几乎相同,只是设置了额外的现时值,qop和不透明值。