• 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;
            }

  • 相关阅读:
    函数执行的预解释
    数组的基本知识点
    前端开发概述+JS基础细节知识点
    JS数据类型的转换规则
    call,apply,求最大最小值,平均数等基础编程知识
    JS面向对象程序设计(OOP:Object Oriented Programming)
    C++ 手记
    C++ 在堆中申请内存方法
    vc驿站视频教程笔记4 Cstring 讲解
    vc驿站视频教程笔记2 ansi 和 unicode
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300881.html
Copyright © 2020-2023  润新知