• HTTP 用户认证


    HTTP 常见的用户认证可以分为下面三种:

    • 基于IP,子网的访问控制(ACL)
    • 基本用户验证(Basic Authentication)
    • 消息摘要式身份验证(Digest Authentication)

    一.基本身份验证(Basic Authentication)

    原理:
    一个页面访问请求

    GET /auth/basic/ HTTP/1.1
    Host: target

    Web服务器要求用书输入用户凭据(服务器返回401响应头和’realm’)

    HTTP/1.1 401 Authorization Required
    Date: Sat, 08 Jun 2013 12:52:40 GMT
    WWW-Authenticate: Basic realm="Basic auth Dir" 
    Content-Length: 401
    Keep-Alive: timeout=15, max=100
    Connection: Keep-Alive
    Content-Type: text/html; charset=iso-8859-1

    浏览器弹出登录窗口(包含’realm’),要求用提供用户名/密码

    GET /auth/basic/ HTTP/1.1
    Host: target
    Authorization: Basic TGVuZ1dhOjEyMzQ1Ng==    //Basic后面就是LengWa:123456经过Base64编码后的字符串

    服务器将用户输入的凭据和服务器端的凭据进行比较。


    二.消息摘要式身份验证(Digest Authentication)

    原理:

    Digest Authentication在基本身份验证上面扩展了安全性. 服务器为每一连接生成一个唯一的随机数, 客户端对用这个随机数对密码进行MD5加密. 然后发送到服务器. 服务器端也用此随机数对密码加密, 然后和客户端传送过来的加密数据进行比较.

    一个页面访问请求

    GET /auth/basic/ HTTP/1.1
    Host: target

    Web服务器要求用书输入用户凭据(服务器返回401响应头和’realm’)

    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: Digest realm="Digest Encrypt", 
    domain="www.domain.com",
    nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3", 
    opaque="0000000000000000",
    stale=false, 
    algorithm=MD5, 
    qop="auth"

    浏览器弹出登录窗口(包含’realm’), 要求用提供用户名/密码

    GET /auth/digest/ HTTP/1.1
    Accept:text/html Authorization: Digest username="LengWa", realm="Digest Encrypt", qop="auth", algorithm="MD5", uri="/auth/digest/", nonce="nmeEHKLeBAA=aa6ac7ab3cae8f1b73b04e1e3048179777a174b3", nc=00000001, cnonce="6092d3a53e37bb44b3a6e0159974108b", opaque="0000000000000000", response="652b2f336aeb085d8dd9d887848c3314"

    服务器将用户输入加密后的凭据和服务器端加密后的的凭据进行比较.如果一致则返回所请求页面的响应.

    总结:
    Basic验证方式配置相对简单,但是安全性太低,不适合一些加密要求比较高的站点。
    Digest则相反,加密性是很高,但是实现起来还是有一点难度的,所以根据自己需要,选择不同的加密方式。

  • 相关阅读:
    数据仓库深入了解
    修改hive 默认fs为s3 遇到的坑
    Hadoop集群的各部分常用端口
    mvc结合web应用实例分析
    MVC简介
    关于jQuery获得表单radio类型输入框的选中值
    关于js中的取值问题
    struct2的xml文件中result的配置(转)
    关于http响应状态码
    关于hibernate插入数据到mysql数据库中文乱码问题的解决
  • 原文地址:https://www.cnblogs.com/rinack/p/7661934.html
Copyright © 2020-2023  润新知