V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rrfeng
V2EX  ›  问与答

关于 HTTP BASIC AUTH ,请教大家

  •  
  •   rrfeng · 2014-11-10 11:48:25 +08:00 · 5270 次点击
    这是一个创建于 3667 天前的主题,其中的信息可能已经有所发展或是发生改变。
    wikipedia 上说:
    ==============
    这一个典型的HTTP客户端和HTTP服务器的对话,服务器安装在同一台计算机上(localhost),包含以下步骤:
    客户端请求一个需要身份认证的页面,但是没有提供用户名和口令。这通常是用户在地址栏输入一个URL,或是打开了一个指向该页面的链接。
    服务端响应一个401应答码,并提供一个认证域。
    接到应答后,客户端显示该认证域(通常是所访问的计算机或系统的描述)给用户并提示输入用户名和口令。此时用户可以选择确定或取消。
    用户输入了用户名和口令后,客户端软件会在原先的请求上增加认证消息头(值是base64encode(username+":"+password)),然后重新发送再次尝试。
    在本例中,服务器接受了该认证屏幕并返回了页面。如果用户凭据非法或无效,服务器可能再次返回401应答码,客户端可以再次提示用户输入口令。
    注意:客户端有可能不需要用户交互,在第一次请求中就发送认证消息头。
    ==============

    那么问题来了:
    1. 假如客户端是浏览器,当认证成功之后,后续的请求还有 auth header 吗?还是保存在 cookie 里?如果没有,server 怎样判断是否同一用户?
    2. 典型的程序用 httpclient 又是如何实现的?在所有请求里都添加 auth header 吗?
    6 条回复    2014-11-10 13:10:06 +08:00
    jason52
        1
    jason52  
       2014-11-10 11:56:58 +08:00   ❤️ 1
    有啊,路由器一般不就是auth header认证嘛,http无状态,一笔就是一笔,每一笔都在header里面有个认证的变量。


    是不是这样哇。。。( ⊙o⊙ )哇
    sNullp
        2
    sNullp  
       2014-11-10 11:57:38 +08:00   ❤️ 1
    1. 后续的一直有 auth header
    2. 这。。不就是每个里面都加 auth header
    hcymk2
        3
    hcymk2  
       2014-11-10 12:02:24 +08:00   ❤️ 1
    每次都有Authorization 头

    如果httpclient 是指java 的apache-httpclient下面有代码。
    http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientPreemptiveBasicAuthentication.java
    typcn
        4
    typcn  
       2014-11-10 12:11:21 +08:00   ❤️ 1
    1有2是

    如果服务器可控的话,建议不要使用这种方式来进行认证,尽量在客户端先进行几次不可逆加密,到服务器后再进行几次,保证密码明文安全。
    sNullp
        5
    sNullp  
       2014-11-10 12:39:40 +08:00   ❤️ 1
    @typcn 即便这样还是可以进行重放攻击。
    使用 HTTP Digest Auth 比较靠谱
    typcn
        6
    typcn  
       2014-11-10 13:10:06 +08:00
    @sNullp 至少用户密码不会明文暴漏。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 06:05 · PVG 14:05 · LAX 22:05 · JFK 01:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.