后续请求的基本 HTTP 身份验证
Posted
技术标签:
【中文标题】后续请求的基本 HTTP 身份验证【英文标题】:basic HTTP authentication on subsequent requests 【发布时间】:2016-09-29 17:15:16 【问题描述】:下图描述了基本的 HTTP 身份验证。客户端请求/family
资源,并要求它识别自己。确实如此,现在它可以访问/family
。然后,客户还请求家庭领域中的/family/photos/kids
资源。
客户端已经为/family
资源标识了自己,但还没有为/family/photos/kids
标识。它们在同一个领域,但服务器不知道同一个客户端发出了请求。或者是吗?服务器如何知道该特定客户端也被允许在后续请求中访问/family/photos/kids
?用户通过身份验证后,每次请求都会发送密码和用户名吗?客户是否通过弹出窗口询问他/她提出的每个请求? cookie 是在首次身份验证时设置的吗?
【问题讨论】:
【参考方案1】:基本身份验证需要客户端发送的标头。没有 cookie 或服务器会话
当客户端请求资源时,发送授权头
GET /family
Authorization: Basic token
其中令牌是 base64(用户名:密码)。用户名后跟 ':' 和使用 base 64 编码的密码
如果您从浏览器请求受保护的资源,例如 GET 请求,并且您没有提供标头,则浏览器会显示 autenticathion 表单并记住它以用于同一域中的后续请求
【讨论】:
感谢您的光临。因此,授权标头以及 base64 编码的凭据会在所有后续请求中发送到整个域或只是 /family?它也会发送 /family/photos/kids 吗?代理授权也会发生同样的情况吗? 客户端必须在每个请求中发送标头。如果您使用浏览器向用户询问凭据,则会将它们用于同一个域。代理,例如 Apache,可用于管理授权或传递以上是关于后续请求的基本 HTTP 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 请求未经客户端身份验证方案“基本”授权。从服务器收到的身份验证标头为“基本领域 =”
Amazon S3 是不是支持带有基本身份验证的 HTTP 请求
HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“基本领域”
HTTP 请求未经客户端身份验证方案“基本”授权。从服务器收到的身份验证标头是“协商,NTLM”