cherrypy.lib.auth_摘要模块¶
HTTP摘要身份验证工具。
HTTP摘要访问身份验证的服务器端实现,如 RFC 2617 .
示例用法,使用内置的get-ha1-dict-plain函数,该函数使用明文密码的dict作为凭证存储:
userpassdict = {'alice' : '4x5istwelve'}
get_ha1 = cherrypy.lib.auth_digest.get_ha1_dict_plain(userpassdict)
digest_auth = {'tools.auth_digest.on': True,
'tools.auth_digest.realm': 'wonderland',
'tools.auth_digest.get_ha1': get_ha1,
'tools.auth_digest.key': 'a565c27146791cfb',
'tools.auth_digest.accept_charset': 'UTF-8',
}
app_config = { '/' : digest_auth }
- class cherrypy.lib.auth_digest.HttpDigestAuthorization(auth_header, http_method, debug=False, accept_charset='UTF-8')[源代码]¶
基类:
object
解析摘要授权头并重新计算摘要。
- is_nonce_stale(max_age_seconds=600)[源代码]¶
如果已验证的nonce已过时,则返回true。nonce包含纯文本形式的时间戳和时间戳的安全散列。您应该首先验证nonce以确保纯文本时间戳没有被欺骗。
- request_digest(ha1, entity_body='')[源代码]¶
计算请求摘要。参见 RFC 2617 第3.2.2.1节。
- 哈1
从凭据存储中获取的HA1字符串。
- entity_body
如果“qop”设置为“auth int”,则a2包含“实体体”的哈希。实体主体是消息的一部分,位于HTTP头之后。参见 RFC 2617 第4.3条。这是指用户代理在具有授权头的请求中发送的实体。通常,GET请求没有实体,POST请求有实体。
- scheme = 'digest'¶
- cherrypy.lib.auth_digest._respond_401(realm, key, accept_charset, debug, **kwargs)[源代码]¶
使用401状态和WWW-Authenticate报头进行响应
- cherrypy.lib.auth_digest.digest_auth(realm, get_ha1, key, debug=False, accept_charset='utf-8')[源代码]¶
一个cherrypy工具,钩住before处理程序以执行HTTP摘要访问身份验证,如中所指定 RFC 2617 .
如果请求具有带有“摘要”方案的“授权”头,则此工具将对该头中提供的凭据进行身份验证。如果请求没有“authorization”头,或者请求没有“authorization”头,或者请求没有“digest”,或者如果验证失败,那么该工具将发送一个401响应,其中包含“www authenticate”摘要头。
- 领域
包含身份验证领域的字符串。
- get_ha1
在凭证存储中查找用户名并返回HA1字符串的可调用文件,该字符串在RFC中定义为MD5(用户名:领域:密码)。函数的签名是:
get_ha1(realm, username)
从请求的“授权”头中获取用户名。如果在凭据存储中找不到用户名,get_ha1()将返回none。- 钥匙
一种只为服务器所知的秘密字符串,用于合成nonce。
- cherrypy.lib.auth_digest.get_ha1_dict(user_ha1_dict)[源代码]¶
返回一个get_ha1函数,该函数从格式为:username:ha1的字典中获取ha1密码哈希。
如果需要基于字典的身份验证方案,但使用预先计算的ha1哈希而不是纯文本密码,请使用get_ha1_dict(my_userha1_dict)作为get_ha1参数的值来摘要_auth()。
- cherrypy.lib.auth_digest.get_ha1_dict_plain(user_password_dict)[源代码]¶
返回一个get_ha1函数,该函数从格式为:用户名:密码的字典中获取纯文本密码。
如果您想要一个简单的基于字典的认证方案,使用纯文本密码,使用get_Ha1_dict_Plain(my_userpass_dict)作为get_Ha1参数的值来消化_auth()。
- cherrypy.lib.auth_digest.get_ha1_file_htdigest(filename)[源代码]¶
返回一个get_ha1函数,该函数从一个平面文件中获取ha1密码哈希,该平面文件的行格式与apache htdigest实用程序生成的行格式相同。例如,对于领域“wonderland”、用户名“alice”和密码“4x5istwelve”,htdigest行为:
alice:wonderland:3238cdfe91a8b2ed8e39646921a02d4c
如果要使用apache htdigest文件作为凭据存储,请使用get_Ha1_file_htdigest(my_htdigest_file)作为get_Ha1参数digest_auth()的值。建议文件名参数是绝对路径,以避免出现问题。