zoukankan      html  css  js  c++  java
  • Http认证方式

    首先要从基础上区别Http与Https,此处差异不考虑。

    HTTP请求报头: Authorization

    HTTP响应报头: WWW-Authenticate

    讨论如下的几种http的认证方式:

    (一)基本认证 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信息进行认证的方式。不包含密码的明文传递,一般以MD5码加密。

    摘要认证步骤:

         1. 客户端访问一个受http摘要认证保护的资源。

         2. 服务器返回401状态以及nonce等信息,要求客户端进行认证。

         3. 客户端将以用户名,密码,nonce值,HTTP方法, 和被请求的URI为校验值基础而加密(默认为MD5算法)的摘要信息返回给服务器。

         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,信息摘要算法)

    (三)WSSE(WS-Security)认证  ← 扩展HTTP认证

       WSSE UsernameToken

        服务器端以nonce进行质询,客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生的response信息进行认证的方式。不包含密码的明文传递。

        

    WSSE认证步骤:

         1. 客户端访问一个受WSSE认证保护的资源。

         2. 服务器返回401状态,要求客户端进行认证。

         3. 客户端将生成一个nonce值,并以该nonce值,密码,当前日时为基础,算出哈希值返回给服务器。

         4. 如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。

        特记事项:

         1. 避免将密码作为明文在网络上传递。

         2. 不需要在服务器端作设置。

         3. 服务器端必须保存密码本身,否则无法进行身份验证。

    http认证方式,工程部分实现:https://www.cnblogs.com/jayinnn/p/9560862.html

    说明:所有内容仅做学习记录
  • 相关阅读:
    关于模式窗体的缓存问题的解决方案
    C# 读取网页
    C# 压缩文件
    C#实现反射调用动态加载的DLL文件中的方法
    在线程中修改窗体控件内容
    C# 启用双缓存,避免ListView控件加载数据时闪烁
    JBuilder2005破解方法
    C# combbox datatable 赋值
    今天感觉到秋凉了~
    烦人的流程图~~~
  • 原文地址:https://www.cnblogs.com/jayinnn/p/9560834.html
Copyright © 2011-2022 走看看