【发布时间】:2012-04-18 21:35:51
【问题描述】:
所以我正在尝试实现以下场景:
- 应用程序受基本身份验证保护。假设它托管在
app.com - 在应用程序前面的 HTTP 代理也需要身份验证。它托管在
proxy.com
因此,用户必须在同一个请求中为代理和应用程序提供凭据,因此他有不同的用户名/密码对:一对用于针对应用程序验证自己,另一个用户名/密码对用于验证自己针对代理。
阅读规范后,我不确定我应该如何实现它。我当时想做的是:
- 用户向代理发出 HTTP 请求,无需任何类型的身份验证。
- 代理回答
407 Proxy Authentication Required并返回Proxy-Authenticate标头,格式为:"Proxy-Authenticate: Basic realm="proxy.com"。
问题:此Proxy-Authenticate标头设置正确吗? - 然后,客户端使用
Proxy-Authorization标头重试请求,这是代理username:password的 Base64 表示。 - 这次代理验证请求,但随后应用程序以
401 Unauthorized标头响应。用户由代理验证,但不是由应用程序验证。应用程序将WWW-Authenticate标头添加到响应中,例如WWW-Authenticate: Basic realm="app.com"。 问题:此标头值正确吗? - 客户端使用
Proxy-Authorization标头和Authorization标头再次重试请求,该标头的值是应用程序username:password的Base64 表示。 - 此时,代理成功地对请求进行身份验证,并将请求转发给对用户进行身份验证的应用程序。客户终于得到了回复。
整个工作流程是否正确?
【问题讨论】:
-
好吧,感谢您在此处解释 Proxy-* 标头,正在寻找它们。但是你解决了你的问题吗?为什么这个问题仍然悬而未决?
-
由于您只是要求对该方法进行一般验证,因此我尝试在围绕此设置的其他排列的答案中添加一些额外的颜色。但是,如果您问这个问题是因为您尝试了您所描述的并遇到了特定错误,请更新问题以包含该错误;尽管我已尽力验证您发布的内容,但真正的测试只是尝试一下,看看会发生什么。
标签: http authentication basic-authentication specifications proxy-authentication