BASIC 认证

BASIC 认证(基本认证)是从 HTTP/1.0 就定义的认证方式。

BASIC 认证会将“用户名:密码”经过 Base64 加密后放入请求头部的 Authorization 字段用于服务端校验,因为采用的是 Base64 加密,密码被盗用的风险极高,另外一般的浏览器也无法实现认证注销操作。

若在网站中使用 BASIC 认证,最好加上 SSL 认证(即开启 HTTPS),否则无法保障密码传输的安全。

DIGEST 认证

为弥补 BASIC 认证存在的弱点,HTTP/1.1 起就有了 DIGEST 认证。DIGEST 认证会将用户密码经过 MD5 加密后传输给服务端,降低了密码被盗用的风险,但是仍然没有解决用户伪装的问题。

步骤2中 response 也可叫做 Request-Digest,存放经过 MD5 运算后的密码字符串,形成响应码。

无论是 BASIC 认证还是 DIGEST 认证,他们都达不到多数 Web 网站对高度安全等级的追求标准。

SSL 客户端认证

SSL客户端认证是借由 HTTPS 的客户端证书完成认证的方式,凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。认证过程可以参见 这篇文章

大多数情况下,SSL 客户端认证是与其他认证方式组合使用的,很明显,SSL 客户端认证只能证明请求是来自于安全的客户端,并没法证明请求是来自于安全的用户。

Bearer 认证

Bearer 认证也属于 HTTP 协议标准验证,它随着 OAuth 协议而流行。

Bearer 认证中的凭证称为 BEARER_TOKEN,或者是 access_token,它的颁发和验证完全由我们自己的应用程序来控制,而不依赖于系统和 Web 服务器,Bearer 认证的标准请求方式如下:

Authorization: Bearer [BEARER_TOKEN]

Bearer 认证的核心便是 BEARER_TOKEN,而最流行的 Token 编码方式便是:JSON WEB TOKEN。

Json web token (JWT), 特别适用于分布式站点的单点登录(SSO)场景。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,也可以增加一些额外的其它业务逻辑所必须的声明信息,该 token 也可直接被用于认证,也可被加密。

表单认证

基于表单的认证方法并不是在 HTTP 协议中定义的。客户端会向服务器上的 Web 应用程序发送登录信息(Credential),登录信息的验证结果认证。

表单认证不具备共同标准规范,在每个 Web 网站上都会有各不相同的实现方式,一般会使用 Cookie + Session 的方式管理会话。

表单认证因为需要自主实现,如果全面考虑过安全性能问题,就能够具备高度的安全等级。但在表单认证的实现中存在问题的 Web 网站也是屡见不鲜。

OAuth2 + OpenID

OAuth 与 OpenID 可以归类为第三方认证方式,即对该用户的认证通过非本服务进行认证。

OAuth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。目前,OAuth 的最新版本为 2.0。

OAuth 强调授权(authorization),举个例子带大家了解 OAuth 授权过程。大家都用过微信授权吧?首先,客户端会请求用户是否允许微信授权,用户允许后,微信端会返回 code 信息;然后,服务端使用 code 信息授权登录微信平台,登录成功后会返回用户认证信息 access_token; 最后,服务端再拿着 access_token 信息获取到用户相关的资源。大致过程如下所示。

那 OpenID 又是什么呢?OpenID 强调认证(authentication),试想一下,客户端请求微信授权的时候,如果用户未登录微信或者没有微信账户呢?是不是就要跳到微信登录页面?而这就是 OpenID 做的事,OpenID 仅仅做一个用户认证的功能,不能拿到用户的任何信息,用户的信息都安全的存储在 OpenID 服务器上(你可以自己建立一个 OpenID 服务网站,也可以选择一个可信任的 OpenID 服务网站来完成注册)。

OpenID 往往在不同服务之间单点登录的时候较为常用。

推荐阅读:

  1. 《图解 HTTP》
  2. 了解第三方认证方式:OAuth与OpenID

看看有哪些 Web 认证技术.的更多相关文章

  1. .Net Web开发技术栈

    有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什么,怎么系统的学,为此我以我微薄之力总结归纳写了一篇.Net web开发技术栈,以此帮助那些想学,却不知 ...

  2. 绕过校园网WEB认证_dns2tcp实现

    相信很多高校学生都有用WEB认证方式接入校园网的经历 拿我所在的大学为例,我们大学的校园网由联通公司承建,当我连上寝室的无线路由器后,浏览器会自动弹出一个由卓智公司开发的认证界面,如下图: 如果买了联 ...

  3. Web攻击技术

    Web攻击技术 1.针对Web的攻击技术 1.1.在客户端即可篡改请求 在Web应用中,从浏览器那接收到的Http的全部内容,都可以在客户端自由地变更.篡改,所以Web应用可能会接收到与预期数据不相同 ...

  4. OpenWRT下实现Portal认证(WEB认证)

    首先简单介绍一下什么是Portal认证,Portal认证,通常也会叫Web认证,未认证用户上网时,设备强制用户登录到特定站点,用户可以免费访问其中的服务.当用户需要使用互联网中的其它信息时,必须在门户 ...

  5. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?   什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念 ...

  6. .Net Web开发技术栈 收藏

    原文:http://www.cnblogs.com/1996V/p/7700087.html#!comments 有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎 ...

  7. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_03-用户认证技术方案-Oauth2协议

    2.2 Oauth2认证 2.2.1 Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的 接口协议. OAUTH协议为用户资源 ...

  8. 图解 HTTP 笔记(八)——常见 Web 攻击技术

    本章主要讲解 HTTP 通信过程中的一些常见 Web 攻击技术 一.跨站脚本攻击 跨站脚本攻击(Cross-Site Scripting, XSS)是指通过存在安全漏洞的 Web 网站注册用户的浏览器 ...

  9. Web开发技术发展历史

    Web开发技术发展历史   来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...

随机推荐

  1. web开发网络请求到数据的整合办法

    开发中向服务器请求到的数据是特别复杂的,需要从中抽离出需要展示的数据进行展示个和交互. 思路: 先将请求到的复杂数据传递到一个类A中,从类A里抽离出需要的数据.需要展示数据的地方,面向类A开发,类A关 ...

  2. Spring-AOP之工作实践(二)

    案例二.前端页面权限控制 对controllor控制器中的某写方法进行增强,如实现页面的按钮权限控制. /** * 保存session的容器 */ public class SessionContex ...

  3. CSS3弹性布局内容对齐(justify-content)属性使用详解

    内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐. 该操作发生在弹性长度以及自动边距被确定后. 它用来在存在剩余空间时如何加以分配 ...

  4. uni-app热更新

    开发工具HbuilderX开发框架 uni-app.h5+1.生成 App 资源升级包1.1.修改版本号1.2.首先,更新 manifest.json 中的版本号.比如之前是 1.0.0,那么新版本应 ...

  5. Second Large Rectangle【单调栈】

    Second Large Rectangle 题目链接(点击) 题目描述 Given a N×MN \times MN×M binary matrix. Please output the size ...

  6. [计网笔记] 传输层---UDP

  7. STL sort的comp函数注意事项

    今天写了个题,结果碰巧re了,我眉头一皱发现事情并不简单. 原来我之前的comp写的都是错的. bool cmp(milkman a,milkman b) { return a.price<=b ...

  8. deepin文件用途

    Bin:二进制文件, 存放二进制文件Dev:存放外接设备,其中外接设备不能被直接使用需要挂载(启动设备)Etc:存放配置文件Home:家目录,出了root用户外的其他用户类似于Windows中的use ...

  9. cb43a_c++_STL_算法_删除_(1)remove_remove_if

    cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...

  10. Selenium自动化测试与练习

    Selenium WebDriver 提供了web自动化各种语言(java python ruby等等) 调用接口库 提供 各种浏览器的驱动(web driver) 来驱动浏览器的 特点 测试程度可以 ...