看看有哪些 Web 认证技术.
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 往往在不同服务之间单点登录的时候较为常用。
推荐阅读:
- 《图解 HTTP》
- 了解第三方认证方式:OAuth与OpenID
看看有哪些 Web 认证技术.的更多相关文章
- .Net Web开发技术栈
有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什么,怎么系统的学,为此我以我微薄之力总结归纳写了一篇.Net web开发技术栈,以此帮助那些想学,却不知 ...
- 绕过校园网WEB认证_dns2tcp实现
相信很多高校学生都有用WEB认证方式接入校园网的经历 拿我所在的大学为例,我们大学的校园网由联通公司承建,当我连上寝室的无线路由器后,浏览器会自动弹出一个由卓智公司开发的认证界面,如下图: 如果买了联 ...
- Web攻击技术
Web攻击技术 1.针对Web的攻击技术 1.1.在客户端即可篡改请求 在Web应用中,从浏览器那接收到的Http的全部内容,都可以在客户端自由地变更.篡改,所以Web应用可能会接收到与预期数据不相同 ...
- OpenWRT下实现Portal认证(WEB认证)
首先简单介绍一下什么是Portal认证,Portal认证,通常也会叫Web认证,未认证用户上网时,设备强制用户登录到特定站点,用户可以免费访问其中的服务.当用户需要使用互联网中的其它信息时,必须在门户 ...
- 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念 ...
- .Net Web开发技术栈 收藏
原文:http://www.cnblogs.com/1996V/p/7700087.html#!comments 有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎 ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_03-用户认证技术方案-Oauth2协议
2.2 Oauth2认证 2.2.1 Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的 接口协议. OAUTH协议为用户资源 ...
- 图解 HTTP 笔记(八)——常见 Web 攻击技术
本章主要讲解 HTTP 通信过程中的一些常见 Web 攻击技术 一.跨站脚本攻击 跨站脚本攻击(Cross-Site Scripting, XSS)是指通过存在安全漏洞的 Web 网站注册用户的浏览器 ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
随机推荐
- Java实现 LeetCode 21 合并两个有序链表
21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...
- Java实现哥德巴赫猜想
验证哥德巴赫猜想:任何一个大于 6 的偶数,都能分解成两个质数的和.要求输入一个整数,输出这个 数能被分解成哪两个质数的和. eg : 14 14=3+11 14=7+7 public class T ...
- 团体天梯赛L1-041.寻找250
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字. 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”. ...
- CGLIB动态代理机制,各个方面都有写到
CGLIB库介绍 代理提供了一个可扩展的机制来控制被代理对象的访问,其实说白了就是在对象访问的时候加了一层封装.JDK从1.3版本起就提供了一个动态代理,它使用起来非常简单,但是有个明显的缺点:需要目 ...
- 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)
作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...
- Pipeline 脚本调用 mvn 命令失败
问题描述 jenkins构建job时 提示mvn 未找到命令 + export JAVA_HOME=/home/tools/jdk1.8.0_221 + JAVA_HOME=/home/tools/j ...
- Eureka加了secsecurity后注册失败
报错信息: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known ...
- 使用iText生成pdf文件
前言 折腾了一早上的iText,下面主要介绍一下如何使用iText通过java代码生成pdf文档,以及如何输出包含中文的pdf文档. 首先,要说明的是,我用的是iText-7(java),下载链接是: ...
- Cookie和localStorage的查询、设置、修改及删除
感谢:链接(视频讲解很详细) cookie:是一种字符串表示的数据,用于在本地记录用户的基本信息(账号,密码等),具有时限性. 数据的具体内容: (图源上文视频链接) localStorage:与co ...
- Python Selenium百度搜索翻页查找文字
#!/usr/bin/python # -*- coding: utf- -*- from selenium import webdriver import time # browser = webd ...