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

  • 相关阅读:
    uniapp请求拦截
    stellar视差插件
    fullpage全屏插件应用
    fullpage全屏插件简介
    WdatePicker日期插件
    Ueditor富文本编辑器
    layer弹出层
    验证码绘制
    Ajax跨域访问
    JQuery封装的ajax方法
  • 原文地址:https://www.cnblogs.com/rinack/p/7661934.html
Copyright © 2011-2022 走看看