HTML5技术

HTTP认证 - 妙音天女

字号+ 作者:H5之家 来源:H5之家 2017-03-27 17:00 我要评论( )

参考博文:HTTP协议详解 HTTP请求报头: Authorization HTTP响应报头: WWW-Authenticate HTTP认证是基于质询/回应(challenge/response)的认证模式。 一、基本认证basic authentication(HTTP1.0提出的认证方法) 介绍 当浏览器访问使用基本认证的网站的时候

参考博文:HTTP协议详解

   

HTTP请求报头: Authorization

HTTP响应报头: WWW-Authenticate

HTTP认证是基于质询/回应(challenge/response)的认证模式。

   

一、基本认证 basic authentication(HTTP1.0提出的认证方法)

  • 介绍

  • 当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图:


    假如用户名密码错误的话,服务器会返回401,如下图:

  • 基本认证步骤:

  • 客户端访问一个受http基本认证保护的资源。
  • 服务器返回401状态,要求客户端提供用户名和密码进行认证。

    (验证失败的时候,响应头会加上WWW-Authenticate: Basic realm="请求域"。)

    401 Unauthorized

    WWW-Authenticate: Basic realm="WallyWorld"

  • 客户端将输入的用户名密码用Base64进行编码后,采用非加密的明文方式传送给服务器。

    Authorization: Basic xxxxxxxxxx.

  • 服务器将Authorization头中的用户名密码解码并取出,进行验证,如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。
  • 特记事项:

  • Http是无状态的,同一个客户端对同一个realm内资源的每一个访问会被要求进行认证。
  • 客户端通常会缓存用户名和密码,并和authentication realm一起保存,所以,一般不需要你重新输入用户名和密码。
  • 以非加密的明文方式传输,虽然转换成了不易被人直接识别的字符串,但是无法防止用户名密码被恶意盗用。虽然用肉眼看不出来,但用程序很容易解密。
  • 优点:

  • 基本上所有流行的网页浏览器支持基本认证。基本认证很少在可公开访问的互联网网站上使用,有时候会在小的私有系统中使用(如路由器网页管理接口)。后来的机制HTTP摘要认证是为替代基本认证而开发的,允许密钥以相对安全的方式在不安全的通道上传输。
  • 程序员和系统管理员有时会在可信网络环境中使用基本认证,使用Telnet或其他明文网络协议工具手动地测试Web服务器。这是一个麻烦的过程,但是网络上传输的内容是人可读的,以便进行诊断。
  • 缺点:

  • 虽然基本认证非常容易实现,但该方案建立在以下的假设的基础上,即:客户端和服务器主机之间的连接是安全可信的。特别是,如果没有使用SSL/TLS这样的传输层安全的协议,那么以明文传输的密钥和口令很容易被拦截。该方案也同样没有对服务器返回的信息提供保护
  • 现存的浏览器保存认证信息直到标签页或浏览器被关闭,或者用户清除历史记录。HTTP没有为服务器提供一种方法指示客户端丢弃这些被缓存的密钥。这意味着服务器端在用户不关闭浏览器的情况下,并没有一种有效的方法来让用户登出
  • 例子:

  • 这一个典型的HTTP客户端和HTTP服务器的对话,服务器安装在同一台计算机上(localhost),包含以下步骤

  • 客户端请求一个需要身份认证的页面,但是没有提供用户名和口令。这通常是用户在地址栏输入一个URL,或是打开了一个指向该页面的链接。
  • 在本例中,服务器接受了该认证屏幕并返回了页面。如果用户凭据非法或无效,服务器可能再次返回401应答码,客户端可以再次提示用户输入口令。
  • 注意:客户端有可能不需要用户交互,在第一次请求中就发送认证消息头。
  • 客户端请求(没有认证信息):
    GET /private/index.html HTTP/1.0
    Host: localhost
    (跟随一个换行,以回车(CR)加换行(LF)的形式)

    服务端应答:
    HTTP/1.0 401 Authorization Required
    Server: HTTPd/1.0
    Date: Sat, 27 Nov 2004 10:18:15 GMT
    WWW-Authenticate: Basic realm="Secure Area"
    Content-Type: text/html
    Content-Length: 311

       

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
    <HTML>
    <HEAD>
    <TITLE>Error</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
    </HEAD>
    <BODY><H1>401 Unauthorized.</H1></BODY>
    </HTML>

    客户端的请求(用户名""Aladdin",口令, password "open sesame"):
    GET /private/index.html HTTP/1.0
    Host: localhost
    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    (跟随一个空行,如上所述)

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • URL解析 - 妙音天女

      URL解析 - 妙音天女

      2017-03-27 16:02

    • URL相关Web APIs - 妙音天女

      URL相关Web APIs - 妙音天女

      2017-03-26 18:02

    • URL编码参考手册 - 妙音天女

      URL编码参考手册 - 妙音天女

      2017-03-26 18:01

    • HTTP状态码 - 妙音天女

      HTTP状态码 - 妙音天女

      2017-03-25 13:01

    网友点评
    >