www-authenticate与BASE-64认证技术

www-authenticate是一种简单的用户身份认证技术。
很多验证都采用这种验证方式,尤其在嵌入式领域中。
优点:方便
缺点:这种认证方式在传输过程中采用的用户名密码加密方式为BASE-64,其解码过程非常简单,如果被嗅探密码几乎是透明的.


服务器收到请求后,首先会解析发送来的数据中是否包含有:
Authorization: Basic XXXX=这种格式的数据
如果没有这样的header数据
那么服务器会发送HTTP信息头WWW-Authenticate: Basic realm=""到浏览器
要求浏览器发送合法的用户名和密码到服务端,为了进一步告知浏览器,这个页面需要认证 我们最还还是接着发送一个401错误
Header("HTTP/1.0 401 Unauthorized");


用户输入用户名:admin 密码:admin后,浏览器将以下面这种格式将数据发送给服务器端:Authorization: Basic YWRtaW46YWRtaW4=
Authorization: Basic为www-authenticate认证的标准HTTP信息头
YWRtaW46YWRtaW4=是经BASE-64加密后的用户名和密码
经解密后的格式为 admin:admin


这时我们就可以用过PHP的全局变量来使用它们了
$_SERVER['PHP_AUTH_USER'];
$_SERVER['PHP_AUTH_PW'];


路由器都是这么做的

if(!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])){
    Header("WWW-Authenticate: Basic realm=\"USER LOGIN\"");
    Header("HTTP/1.0 401 Unauthorized");
} else {
    echo $_SERVER['PHP_AUTH_USER'];
    echo $_SERVER['PHP_AUTH_PW'];
}


--------------------------------------

http://tool.chinaz.com/Tools/Base64.aspx


比如java的http请求认证:

Base64加密码:Z3Vlc3Q6Z3Vlc3Q=   

表示:guest:guest

HttpGet httpGet = new HttpGet("http://192.168.1.10:55672/api/queues");
        httpGet.setHeader("Authorization", "Basic Z3Vlc3Q6Z3Vlc3Q=");
        try {
            HttpResponse httpResponse = httpClient.execute(httpGet);
            String res = EntityUtils.toString(httpResponse.getEntity());
        } catch (Exception e) {
            LOGGER.warn("http client fail", e);
            return null;
        }

转载于:https://www.cnblogs.com/wuyida/p/6300881.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值