`
javasalatu
  • 浏览: 725133 次
  • 性别: Icon_minigender_2
  • 来自: 北京
博客专栏
96df99eb-e89d-3228-9c8e-967fc745ec52
程序员的自我经营之道
浏览量:7710
文章分类
社区版块
存档分类
最新评论

HTTP认证方式

 
阅读更多
HTTP请求报头:Authorization
HTTP响应报头: WWW-Authenticate

HTTP认证
基于
质询
/回应(
challenge/response)的认证模式。

◆ 基本认证 basic authentication   ← HTTP1.0提出的认证方法
客户端对于每一个realm,通过提供用户名和密码来进行认证的方式。
※ 包含密码的明文传递

基本认证步骤:
1. 客户端访问一个受http基本认证保护的资源。
2. 服务器返回401状态,要求客户端提供用户名和密码进行认证。
401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
3. 客户端将输入的用户名密码用Base64进行编码后,采用非加密的明文方式传送给服务器。
Authorization: Basic xxxxxxxxxx.
4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。
特记事项
1. Http是无状态的,同一个客户端对同一个realm内资源的每一个访问会被要求进行认证。
2. 客户端通常会缓存用户名和密码,并和authentication realm一起保存,所以,一般不需要你重新输入用户名和密码。
3. 以非加密的明文方式传输,虽然转换成了不易被人直接识别的字符串,但是无法防止用户名密码被恶意盗用。

◆摘要认证 digest authentication   ← HTTP1.1提出的基本认证的替代方法
服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。
※ 不包含密码的明文传递
摘要认证步骤:
1. 客户端访问一个受http摘要认证保护的资源。
2. 服务器返回401状态以及nonce等信息,要求客户端进行认证。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="testrealm@host.com",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
3. 客户端将以用户名,密码,nonce值,HTTP方法, 和被请求的URI为校验值基础而加密(默认为MD5算法)的摘要信息返回给服务器。
认证必须的五个情报:
     ・ realm : 响应中包含信息
     ・ nonce:响应中包含信息
     ・ username: 用户名
     ・ digest-uri: 请求的URI
     ・ response:以上面四个信息加上密码信息,使用MD5算法得出的字符串。

Authorization: Digest
username="Mufasa",  ← 客户端已知信息
realm="testrealm@host.com",   ← 服务器端质询响应信息
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",  ← 服务器端质询响应信息
uri="/dir/index.html", ← 客户端已知信息
qop=auth,   ← 服务器端质询响应信息
nc=00000001, ← 客户端计算出的信息
cnonce="0a4f113b", ← 客户端计算出的客户端nonce
response="6629fae49393a05397450978507c4ef1", ← 最终的摘要信息 ha3
opaque="5ccc069c403ebaf9f0171e9517f40e41"  ← 服务器端质询响应信息
4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。

特记事项:
1.避免将密码作为明文在网络上传递,相对提高了HTTP认证的安全性。
2. 当用户为某个realm首次设置密码时,服务器保存的是以用户名,realm,密码为基础计算出的哈希值(ha1),而非密码本身。
3. 如果qop=auth-int,在计算ha2时,除了包括HTTP方法,URI路径外,还包括请求实体主体,从而防止PUT和POST请求表示被人篡改。
4.但是因为nonce本身可以被用来进行摘要认证,所以也无法确保认证后传递过来的数据的安全性。

※ nonce:随机字符串,每次返回401响应的时候都会返回一个不同的nonce。
※ nounce:随机字符串,每个请求都得到一个不同的nounce。
※ MD5(Message Digest algorithm 5,信息摘要算法)
① 用户名:realm:密码 ⇒ ha1
②HTTP方法:URI ⇒ ha2
③ ha1:nonce:nc:cnonce:qop:ha2 ⇒ ha3

◆WSSE(WS-Security)认证  ← 扩展HTTP认证
WSSE UsernameToken
服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。
※ 不包含密码的明文传递
WSSE认证步骤:
1. 客户端访问一个受WSSE认证保护的资源。
2. 服务器返回401状态,要求客户端进行认证。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: WSSE
realm="testrealm@host.com",
profile="UsernameToken" ← 服务器期望你用UsernameToken规则生成回应
※ UsernameToken规则:客户端生成一个nonce,然后根据该nonce,密码和当前日时来算出哈希值。
3. 客户端将生成一个nonce值,并以该nonce值,密码,当前日时为基础,算出哈希值返回给服务器。
Authorization: WSSEprofile="UsernameToken"
X-WSSE:UsernameToken
username="Mufasa",
PasswordDigest="Z2Y......",
Nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
Created="2010-01-01T09:00:00Z"
4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。

特记事项:
1.避免将密码作为明文在网络上传递。
2. 不需要在服务器端作设置。
3. 服务器端必须保存密码本身,否则无法进行身份验证。
分享到:
评论

相关推荐

    Web应用安全:无状态的HTTP认证.pptx

    Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。 概述 Digest认证 是一种更加安全的认证形式, 在传输密码前...

    Web应用安全:体验Basic认证.pptx

    Basic认证是一种较为简单的HTTP认证方式,客户端通过明文(Base64编码格式)传输用户名和密码到服务端进行认证,通常需要配合HTTPS来保证信息传输的安全。 1、概述 Basic认证 ①当打开需要认证的页面时,会弹出一个...

    http basic authentication通过post方式访问api示例分享 basic认证示例

    在HTTP中,基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供以用户名和口令形式的凭证,这篇文章主要介绍了http basic authentication通过post方式访问api示例,大家参考使用吧

    http接口认证实现

    http对外接口安全认证,利用spring aop方式,对特定的controller的方法进行拦截,类似微信SDK的安全认证功能,实现http请求认证。认证后产生令牌,30分钟有效期内可使用令牌无需认证。详细内容请关注微信公众号...

    VC http/https(包含单向认证、双向认证源码、SSL协议设置)

    VC http/https(包含单向认证、双向认证源码、SSL协议设置) 这个类是从我现在正在开发的代码中扣出来的,但是耦合性应该不高,可以加入到其他工程使用,带S的函数是针对多线程压力测试几乎没有捕获异常。代码以先...

    Basic Auth认证get请求的java代码片段

    通过base64加密方式将用户名和密码进行封装,生成basic auth的认证信息,再将该信息塞进请求头里,最后通过认证进行get请求。

    精通PKI网络安全认证技术与编程实现_PDF书签高清版.7z.005(共5个压缩包)

    为了方便读者深入了解pki,本书按照先原理、再讲解、再实战的方式进行,并且全部实例和软件都保存在随书赠送的光盘中。 本书适合pki应用开发人员、企业网络管理人员以及大、中专院校师生阅读。 下载点数已经修改为0...

    Http Digest 鉴权

    “摘要”式认证( Digest authentication)是一个简单的认证机制,最初是为HTTP协议开发的,因而也常叫做HTTP摘要,在RFC2671中描述。其身份验证机制很简单,它采用杂凑式(hash)加密方法,以避免用明文传输用户的...

    最新腾讯微博SSO授权认证SDK源码修改,另附API调用demo

    附上博客详解地址:http://blog.csdn.net/hap_gx/article/details/9085071 所谓SSO认证,通俗的一点讲就是,自己写的app需要使用新浪或腾讯微进行分享、发表微博等...无论双方方式是否有什么不同,最终的结果是一样的。

    爱科U盘认证3.0

    <br>软件开发商在开发软件特别是行业软件时经常用到身份验证,传统当方式是采用用户名+密码的方式进行认证,这样的验证方式存在很多缺点主要表现在以下两个方面: <br> 1. 用户信息容易泄密 <br> 2. 用户...

    ACS是Cisco出的一个 AAA 认证软件,可以对路由器进行用户认证、授权、记账操作。

    选择是否打开Enable Log-in Monitoring按纽,同时选择报警方式,包括No Remedial Action,Reboot,Restart All,Restart RADIUS/TACACS+,还可以选择通过EMAIL进行报警,(同时要配置EMAIL的SMTP Mail Server和Mail ...

    基于RBAC(用户-角色-资源)关注于对API的安全保护,无特定Web框架依赖的一个认证鉴权框架,面向RESTAPI 的认证鉴权

    Sureness 是我们在深度... 可扩展自定义认证方式,基于改进的字典匹配树拥有的高性能,良好的扩展接口, 样例和文档助急速理解扩展使用。Sureness的低配置,易扩展,不耦合其他框架,希望能对系统多场景快速安全的保护

    Python操作Jira库常用方法解析

    Jira的访问是有权限的,在访问Jira项目时首先要进行认证,Jira Python库提供了3种认证方式: 通过Cookis方式认证(用户名,密码) 通过Basic Auth方式认证(用户名,密码) 通过OAuth方式认证 认证方式只需要选择...

    面向REST API的高性能认证鉴权框架,致力于管理保护API安全

    面向 REST API 的认证鉴权,基于 RBAC (用户-角色-资源)主要关注于对 API 的安全保护。无特定Web框架依赖(已有 Spring Boot,Quarkus,Javalin,Ktor,Micronaut,Jfinal,Solon 等集成样例)。... 可扩展自定义认证方式

    精通PKI网络安全认证技术与编程实现_PDF书签高清版.7z.003(共5个压缩包)

    为了方便读者深入了解pki,本书按照先原理、再讲解、再实战的方式进行,并且全部实例和软件都保存在随书赠送的光盘中。 本书适合pki应用开发人员、企业网络管理人员以及大、中专院校师生阅读。 下载点数已经修改为...

    蓝海卓越认证计费系统G90

    一、配置PPPOE 拨号服务器,通过RADIUS 方式,将认证服务器地址指向本设备IP 地址 二、通过IP 地址访问计费管理服务器,可以从任意能访问该地址的网络上,对其进行访问。 三、登录管理界面,出厂默认的管理员使用的...

    2、Kubernetes 集群安全 - 认证1

    HTTP Base 认证:通过 用户名+密码 的方式认证用户名+:+密码 用 BASE64 算法进行编码后的字符串放在 HTTP Request 中的 Heat

Global site tag (gtag.js) - Google Analytics