• 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则相反,加密性是很高,但是实现起来还是有一点难度的,所以根据自己需要,选择不同的加密方式。

  • 相关阅读:
    A/B test模块使用以及配置
    Linux下的tar压缩解压缩命令详解
    php mysql转义特殊字符的函数(转)
    cas server + cas client 单点登录 原理介绍
    php二维码的生产以及下载
    shiro 获取已经登录的用户
    Sql 根据多条件查询重复的数据 MySQL删除重复数据
    js base64 转PDF并下载,js baser64转图片并下载
    当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
    我的博客初始“话”
  • 原文地址:https://www.cnblogs.com/rinack/p/7661934.html
Copyright © 2020-2023  润新知