• HTTP Authorization


    谨以此文献给那些需要实现HTTP AUTH的“程序猿”们。

    关于HTTP AUTH的文档不多。

    RFC在 http://www.ietf.org/rfc/rfc2617.txt

    wiki在 http://en.wikipedia.org/wiki/Basic_access_authentication

    使用HTTP AUTH需要在server端配置http auth信息(一般是webserver启动的时候从配置文件里面读取相关信息)。我用中文简述一下http auth的过程:

    • 客户端发送http请求
    • 服务器发现配置了http auth,于是检查request里面有没有"Authorization"的http header
    • 如 果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=是base64编码的"user:passwd"字符串。
    • 如果没有,或者用户密码不对,则返回http code 401页面给客户端
    • 标准的http浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header

    一次典型的访问场景是:

    • 浏览器发送http请求(没有Authorization header)
    • 服务器端返回401页面
    • 浏览器弹出认证对话框
    • 用户输入帐号密码,并点确认
    • 浏览器再次发出http请求(带着Authorization header)
    • 服务器端认证通过,并返回页面
    • 浏览器显示页面

    使用http auth的场景不会用cookie,也就是说每次都会送帐号密码信息过去。然后我们都知道base64编码基本上等于明文。这削弱了安全。

    由于种种缺点,http auth现在用的并不多。不过在路由器等场合还是有应用的,原因是http auth最简单,使用起来几乎是零成本。

    在你需要做访问控制,又不想拖上SSO、数据库之类的东西的时候,http auth不失为一个简洁的选项。

  • 相关阅读:
    Android自定义控件 -Canvas绘制折线图(实现动态报表效果)
    Android事件分发机制详解(2)----分析ViewGruop的事件分发
    Android事件分发机制详解(1)----探究View的事件分发
    Java单例模式(转载)
    排序算法练习--JAVA(:内部排序:插入、选择、冒泡、快速排序)
    javaIO-学习笔记
    java多线程基础
    java二分查找举例讨论
    tomcat安装部署完整过程
    mariadb安装部署完整过程
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5521975.html
Copyright © 2020-2023  润新知