zoukankan      html  css  js  c++  java
  • 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;
            }

  • 相关阅读:
    Media所有参数汇总
    图片360度旋转实例
    HTML5 input date 移动端 IOS 不支持问题
    keyframes 放大缩小动画
    CSS font-size字体大小样式属性
    前端之路
    typeof操作符,返回数据类型Array.isArray()、Object.prototype.toString.call()
    响应式布局简单介绍
    mysql存储引擎
    html5 拖放学习
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300881.html
Copyright © 2011-2022 走看看