zoukankan      html  css  js  c++  java
  • asp.net digest 摘要认证过程

    最近在调试一款门禁产品,门禁产品使用的digest 认证

    摘要认证的关键是加密算法过程,客户端根据服务器返回的信息+自己的用户名和密码信息,进行本地加密,然后发送加密后的摘要信息到服务器,服务器根据用户传递的信息进行验证,验证通过则代表有权限

    访问过程如下

    (1)对于需要认证的HTTP交互,客户端在提交HTTP请求后,服务端会返回401 Unauthorized的应答,

     并且头部包含WWW-Authenticate项,表示客户端需要提供认证信息. HTTP头部的WWW-Authenticate项示例如下.

    WWW-Authenticate: Digest realm="webserver", domain="::", qop="auth", nonce="ZmFkODI1Y2ZmZTQwYTM3MDJhZTRmMWI1ZWE5NTRiZWY6d2Vic2VydmVyOjVkZDQwODg3OjExNw==", opaque="5ccc069c403ebaf9f0171e9517f40e41", algorithm="MD5", stale="FALSE"

    (2)客服端根据返回的header数据进行本地加密

    string realm = "webserver";
    string nonce = "ZmFkODI1Y2ZmZTQwYTM3MDJhZTRmMWI1ZWE5NTRiZWY6d2Vic2VydmVyOjVkZDQwODg3OjExOQ==";
    string uri = "digest/frmDstPara";
    string nonceCount = "00000002";
    string clientNonce = "...";
    string response = "";
    string HA1 = MD5Str("admin:" + realm + ":asdfghjkl123").tolower();
    string HA2 = MD5Str("POST:" + uri).tolower();
    string s2= String.Format("{0}:{1}:{2}:{3}:{4}:{5}", HA1, nonce, nonceCount, clientNonce, "auth", HA2);
    response = MD5Str(s2).tolower(); ;

    其中需要注意的是HA1 和HA2和 respoinse一定要转换为小写,否则对于标准的digest 认证可能通过不了

    这里的clientNonce 为客户端生成的nonce值

    而nonceCount 用于统计,假设开始时为00000001,下次请求后就变成了00000002,不一定每次都加1,但是后面请求中的nc值肯定大于前一次请求中的nc值。

    (3)提交请求,服务器会在header里查找 Authorization 并进行和客户端一样的加密过程,对比response是否一致,一致的话,则返回200

    在header 里添加 Authorization 

    Authorization: Digest username="admin", realm="webserver", nonce="ZmFkODI1Y2ZmZTQwYTM3MDJhZTRmMWI1ZWE5NTRiZWY6d2Vic2VydmVyOjVkZDQwODg3OjExOQ==", uri="digest/frmDstPara", response="f84a841fef42be86c925b346324eba77", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000002, cnonce="dff275c9dd027985"

  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1046 Shortest Distance (20)
    1061 Dating (20)
    1041 Be Unique (20)
    1015 Reversible Primes (20)(20 分)
    pat 1027 Colors in Mars (20)
    PAT 1008 Elevator (20)
    操作系统 死锁
    Ajax的get方式传值 避免& 与= 号
    让IE浏览器支持CSS3表现
  • 原文地址:https://www.cnblogs.com/qiejinxing/p/13588579.html
Copyright © 2011-2022 走看看