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

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. 服务器端必须保存密码本身,否则无法进行身份验证。
分享到:
评论

相关推荐

    boa多用户认证功能

    1. **Basic Authentication**:这是一种最简单的HTTP认证方式,用户凭据(用户名和密码)以Base64编码的形式通过HTTP头传输。尽管它简单,但安全性较低,因为数据在网络中明文传输。 2. **Digest Authentication**...

    Tomcat Basic Form认证实例!

    1. **Basic认证**:这是一种简单的HTTP认证方式,用户凭据(用户名和密码)通过Base64编码的HTTP头发送到服务器。这种方式不安全,因为凭据在网络中明文传输,但适用于测试环境或内部网络。 2. **Form认证**:Form...

    Spring Security通过AuthenticationManager的逻辑实现多种认证方式.docx

    总的来说,`AbstractAuthenticationProcessingFilter`结合`AuthenticationManager`提供了一种灵活的机制,可以实现多种认证方式。开发者可以通过自定义`AuthenticationProvider`和`AuthenticationManager`的实现,...

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

    这种认证方式是基于HTTP头部的,通过将用户名和密码编码为Base64字符串并将其放入`Authorization`头部来实现。在本文中,我们将深入探讨如何使用POST方式通过HTTP基本认证访问API,并给出一个Java代码示例。 在HTTP...

    WIFI十二种web认证方式及简单配置.pdf

    WIFI 十二种 web 认证方式及简单配置 WIFI 认证是 WIFI 网络安全的关键组件,提供了多种认证方式来满足不同场景的需求。下面我们将详细介绍 WIFI 十二种 web 认证方式及简单配置。 一、 不需认证 不需认证是 ...

    新联通(网通)ADSL宽带PPPOE认证方式共享上网——路由器设置.docx

    新联通(网通)ADSL宽带PPPOE认证方式共享上网——路由器设置 在这个文件中,我们可以获取以下几个知识点: 一、PPPOE 认证协议 PPPOE(Point-to-Point Protocol over Ethernet)是一种常用的宽带认证协议,它...

    Web认证PAP方式流程

    Web认证PAP方式流程是一种常见的网络访问控制方法,主要用于公共Wi-Fi或企业内部网络环境,确保只有经过身份验证的用户才能接入网络。该流程详细解释如下: 1. **用户访问外网网页请求**:用户(Station)尝试访问...

    httpcore jar包

    2. **认证与安全**:支持基本认证、摘要认证等多种HTTP认证方式,同时提供了SSL/TLS支持,可以安全地进行HTTPS通信。 3. **请求与响应处理**:HttpClient提供了丰富的请求构建器和响应处理器,可以方便地添加请求头...

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

    Portal认证是无线网络中常见的用户认证方式,它要求用户在未认证的状态下只能访问特定的门户网站,这个网站通常被称为Portal页面。当用户想要访问互联网中其他资源时,必须在这个Portal页面上进行认证,认证通过后,...

    linux boa 源码分析

    最终,研究人员选择了HTTP认证方式作为解决方案。通过修改Boa的配置文件(`Boa.conf`),可以启用HTTP基本认证功能。例如,为了保护一个名为`/internal/`的虚拟目录,可以在配置文件中指定该目录只允许特定用户访问...

    MAC认证及WEB认证配置指导

    MAC认证是一种网络安全技术,主要目的是基于设备的物理地址(即MAC地址)来限制网络访问权限。这种方法无需用户安装额外的...在实际网络部署中,根据安全需求和用户体验,这两种认证方式可能会结合使用,提供多层防护。

    RFC2617标准的Http认证(C和CPP两个工程)

    在标签中提到的"HttpDigest"和"HTTP认证",前者是HTTP摘要认证的简称,后者则包含了所有基于HTTP协议的认证方式,包括但不限于基本认证和摘要认证。 文件名称列表中的"HttpAuth_c.rar"和"HttpAuth_cpp.rar",分别...

    python pycurl验证basic和digest认证的方法

    基本认证(Basic)和摘要认证(Digest)是两种常见的HTTP认证方式。 基本认证(Basic Authentication)是一种简单的认证方式,它将用户名和密码通过Base64编码后传递给服务器。由于这种方法并不安全,因为它不提供...

    Acegi

    - **Digest Authentication**:更安全的HTTP认证方式,防止密码在网络传输过程中被截获。 - **Anonymous Authentication**:匿名访问,适用于不需用户认证的公开资源。 - **Remember-Me Authentication**:自动...

    RestTemplate如何通过HTTP Basic Auth认证.docx

    通过这种方式,我们可以在不修改原有代码的情况下,为 RestTemplate 添加全局的 HTTP Basic Auth 支持,提高了代码的可维护性和整洁度。 总之,使用 RestTemplate 进行 HTTP Basic Auth 认证,主要涉及 Base64 编码...

    spring 安全文档 PDF

    - **表单和基本登录选项**:通过配置<http>元素中的form-login和http-basic元素,可以实现自定义的登录表单或使用基本的HTTP认证方式。 - **使用其他认证提供者**:除了内置的认证机制外,Spring Security还支持...

    http鉴权认证

    - **HTTP基本认证**:是最简单的鉴权方式,用户名和密码以Base64编码的形式在请求头中发送。由于明文传输,安全性较低。 - **HTTP摘要认证**:比基本认证更安全,它使用哈希函数对用户名、密码和随机字符串进行...

Global site tag (gtag.js) - Google Analytics