Mar*_*ark 42 authentication specifications http basic-authentication proxy-authentication
所以我试图实现以下场景:
app.comproxy.com因此,用户必须在同一请求中为代理和应用程序提供凭证,因此他具有不同的用户名/密码对:一对用于对应用程序进行身份验证,另一对用户/密码对用于对代理进行身份验证.
阅读规范后,我不确定我应该如何实现这一点.我想要做的是:
407 Proxy Authentication Required并返回Proxy-Authenticate以下格式的标头:"Proxy-Authenticate: Basic realm="proxy.com".Proxy-Authenticate标题是否正确设置?Proxy-Authorization标头重试请求,该标头是代理的Base64表示username:password.401 Unauthorized标头进行应答.用户由代理进行身份验证,但不是由应用程序进行身份验证.应用程序WWW-Authenticate为响应添加标题WWW-Authenticate: Basic realm="app.com".问题:这个标题值是对的吗?Proxy-Authorization标头和使用Authorization应用程序的Base64表示值的标头重试请求username:password.整个工作流程是否正确?
Mar*_*ins 28
是的,对于您描述的情况,这看起来像是一个有效的工作流程,并且那些Authenticate标头看起来格式正确.
值得注意的是,尽管不太可能,给定连接可能涉及链接在一起的多个代理,并且每个代理本身都需要身份验证.在这种情况下,每个中间代理的客户端本身将返回一条407 Proxy Authentication Required消息,并自己用Proxy-Authorization头重复请求; 在Proxy-Authenticate和Proxy-Authorization标头是没有得到从一台服务器传递到下一个单跳头,但WWW-Authenticate并Authorization是被认为是从客户端到服务器的最后端至端头,通过逐字通过了中间人.
由于该Basic方案以明文形式发送密码(base64是可逆编码),因此最常用于SSL.此方案以不同的方式实现,因为希望防止代理看到发送到最终服务器的密码:
CONNECT请求(仍带有Proxy-Authorization标头)以打开到远程服务器的TCP隧道.Authorization标头的最终HTTP消息.在这种情况下,代理只知道客户端连接到的主机和端口,而不知道通过内部SSL通道传输或接收的内容和端口.此外,嵌套通道的使用允许客户端"看到"代理和服务器的SSL证书,允许对两者的身份进行身份验证.
| 归档时间: |
|
| 查看次数: |
52929 次 |
| 最近记录: |