【问题标题】:basic HTTP authentication on subsequent requests后续请求的基本 HTTP 身份验证
【发布时间】:2016-09-29 17:15:16
【问题描述】:

下图描述了基本的 HTTP 身份验证。客户端请求/family 资源,并要求它识别自己。确实如此,现在它可以访问/family。然后,客户还请求家庭领域中的/family/photos/kids 资源。

客户端已经为/family 资源标识了自己,但还没有为/family/photos/kids 标识。它们在同一个领域,但服务器不知道同一个客户端发出了请求。或者是吗?服务器如何知道该特定客户端也被允许在后续请求中访问/family/photos/kids?用户通过身份验证后,每次请求都会发送密码和用户名吗?客户是否通过弹出窗口询问他/她提出的每个请求? cookie 是在首次身份验证时设置的吗?

【问题讨论】:

    标签: http server client basic-authentication


    【解决方案1】:

    基本身份验证需要客户端发送的标头。没有 cookie 或服务器会话

    当客户端请求资源时,发送授权头

    GET /family
    Authorization: Basic token
    

    其中令牌是 base64(用户名:密码)。用户名后跟 ':' 和使用 base 64 编码的密码

    如果您从浏览器请求受保护的资源,例如 GET 请求,并且您没有提供标头,则浏览器会显示 autenticathion 表单并记住它以用于同一域中的后续请求

    【讨论】:

    • 感谢您的光临。因此,授权标头以及 base64 编码的凭据会在所有后续请求中发送到整个域或只是 /family?它也会发送 /family/photos/kids 吗?代理授权也会发生同样的情况吗?
    • 客户端必须在每个请求中发送标头。如果您使用浏览器向用户询问凭据,则会将它们用于同一个域。代理,例如 Apache,可用于管理授权或传递
    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2019-05-05
    相关资源
    最近更新 更多