zoukankan      html  css  js  c++  java
  • HTTP Basic Authentication认证

    前言

    大家在登录网站的时候,大部分时候是通过一个表单提交登录信息。

    但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证。


    说明 HTTP Basic Authentication

    在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回401,如果你直接在浏览器中打开,浏览器会提示你输入用户名和密码,也就是上面的图示。

    要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法:  

    一是在请求头中添加Authorization:  Authorization: "Basic 用户名和密码的base64加密字符串"  。
    二是在url中添加用户名和密码。

    认证过程:

    第一步:  客户端发送http request 给服务器,服务器验证该用户是否已经登录验证过了,如果没有的话,服务器会返回一个401 Unauthozied给客户端,并且在Response 的 header "WWW-Authenticate" 中添加信息。如下图。


    第二步:浏览器在接受到401 Unauthozied后,会弹出登录验证的对话框。用户输入用户名和密码后,浏览器用BASE64编码后,放在Authorization header中发送给服务器。如下图:

     第三步: 服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端,认证结束。

      当request第一次到达服务器时,服务器没有认证的信息,服务器会返回一个401 Unauthozied给客户端。认证之后将认证信息放在session,以后在session有效期内就不用再认证了。

    Http Basic Auth 原理

    在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份认证的方法,当一个客户端向HTTP服务 器进行数据请求时,

    如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。

    客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码, 用户输入后,

    客户端将用户名和密码中间用“:”分隔合并,并将合并后的字符串用BASE64编码,在每次请求数据 时,将密文附加于请求头(Request Header)Authorization: Basic XXXXXXX中。

    HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64编码的用户名和密码),解开请求包,对用户名及密码进行验证,

    如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

    参考文档:https://blog.csdn.net/qq_15783243/article/details/78586699

    https://www.cnblogs.com/xiaocandou/p/7991927.html

    https://blog.csdn.net/youzhouliu/article/details/52048393

    https://blog.csdn.net/jingzhunbiancheng/article/details/80959492



  • 相关阅读:
    Android开发总结
    Java开发中的23种设计模式详解(转)
    Linux下Tomcat的安装配置
    Linux下Tomcat的启动、关闭、杀死进程
    在陌生Linux环境查看Tomcat服务的方法
    JAVA用freemarker生成复杂Excel。(freemarker)
    JAVA生成Word文档(经过测试)
    jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space
    TabHost
    ProgressBar
  • 原文地址:https://www.cnblogs.com/yuqiangli0616/p/9389273.html
Copyright © 2011-2022 走看看