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. Android如何使用OKHttp

    首先要在build.gradle里面写入 // 添加OKHttp支持 implementation("com.squareup.okhttp3:okhttp:4.3.1") 下面是 ...

  2. Linux vi使用技巧

    导入命令执行结果:r !命令,例如:导入已经存在的文件内容到当前文件 导入命令执行的结果到当前文件 定义快捷键,map 快捷键 触发命令,例如:map ^P I#<ESC>(使用CRTL+ ...

  3. 案例:DG主库未设置force logging导致备库坏块

    DG搭建时,官方文档手册有明确提到要设置数据库为force_logging,防止有nologging操作日志记录不全导致备库应用时出现问题. 虽然是老生常谈的安装规范,但现实中总会遇到不遵守规范的场景 ...

  4. SwiftUI - iOS10本地推送通知教程UserNotifications在Swift中的实现方式

    简介 消息推送相信在很多人的眼里都不陌生了吧?像即时聊天微信,好友发信息给你时会在顶部弹下小窗口提醒你.也像是在影院APP预订了电影票,在开场前一小时你也会收到提醒.这类推送是需要经过后端发送请求的, ...

  5. MySQL数据库字符集和排序规则的四个级别

    MySQL数据库字符集和排序规则有四个级别的默认设置:服务器,数据库,表和列. 最初,服务器字符集和排序规则取决于启动mysqld时使用的选项.可以使用 --character-set-server该 ...

  6. js实现初始化调用摄像头

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  7. mysql常见聚合函数

    count():总数量avg():平均数std():标准差sum():求和max():最大值min():最小值 上面的不过多介绍group_concat():分组列值全部展示到一行eg:mysql&g ...

  8. 网络聚合Network Teaming

    team是新的聚合软件,依赖于安装包teamd,可以通过nmcli管理. team和bond的区别在于,支持hash加密,支持负载均衡,支持8块网卡,更好地支持IPV6,总之要取代bond. 1. 添 ...

  9. 听说你的资源被盗用了,那你知道 Nginx 怎么防盗链吗?

    上一篇文章讲了 Nginx 中的变量和运行原理,下面就来说一个主要提供变量并修改变量的值的模块,也就是我们要讲的防盗链模块:referer 模块. 简单有效的防盗链手段 场景 如果做过个人站点的同学, ...

  10. 02.DRF-认识RESTful

    认识RESTful 在前后端分离的应用模式里,后端API接口如何定义? 例如对于后端数据库中保存了商品的信息,前端可能需要对商品数据进行增删改查,那相应的每个操作后端都需要提供一个API接口: POS ...