用于开发人员访问应用程序的认证
项目描述
简介
许多调试工具提供通过Web的功能,这些功能是私有的、重要的,并且与系统上的任何其他认证正交。DevAuth是一个提供限制访问这些工具的单一方式的工具。
DevAuth仅是一个认证系统,它本身不提供任何工具。它仅适用于开发者,并且不是一个适用于通用应用程序的认证系统。
这是为wsgi.org开发者认证规范编写的。
认证
DevAuth使用了两种认证方式:用户名/密码认证和基于IP的限制。理想情况下,您会同时使用这两种方式以获得更高的安全性。对于本地开发,使用127.0.0.1的IP限制也可能是合理的。
用户名/密码认证可以使用检查用户名和密码的函数(如valid_login = password_checker(username, password))或Apache htpasswd风格的文件完成。
基于IP的认证使用拒绝和允许。如果您提供了被拒绝的IP地址,这些地址将被完全拒绝;如果您提供了允许的IP地址,则只允许来自这些IP地址的请求。在拒绝和允许之间,拒绝具有优先权。这些可以是IP地址列表(以逗号分隔),IP掩码(如192.168.0.0/24)或范围(如192.168.1<->3,表示192.168.{1-3}.*)。
开发者IP地址的任何更改都要求重新登录。登录可能会过期(如果已配置),需要重新登录。
使用/配置
DevAuth的基本使用方法如下
from devauth import DevAuth app = ... instantiate main app ... wrapped_app = DevAuth(app, ...configuration...)
配置是关键字参数
- 允许:
允许的IP地址。这可以是字符串或字符串列表。有关允许的格式,请参阅认证。默认为"127.0.0.1",即只允许本地访问。None表示允许任何IP地址。请注意,environ['REMOTE_ADDR']和environ['HTTP_X_FORWARDED_FOR']都会进行检查,两者都必须通过。
- 拒绝:
类似于允许,但来自与这些IP地址匹配的IP地址的请求将不允许登录。
- password_file:
这是一个文件名,是密码文件的存放位置,该文件由htpasswd生成。您可以创建此文件如下
$ htpasswd -s devauth.htpasswd username New password: Re-type new password: Adding password for user username
您必须使用参数-c首先创建文件(没有它将附加条目)。-s使用SHA对密码进行散列;htpasswd支持的任何散列都有效,但SHA比默认值更好。
- password_checker:
这是一个用于检查用户名和密码的函数。一个非常简单的实现可能是
def password_checker(username, password): return username == 'admin' and password='topsecret'
- secret_file,secret
DevAuth使用服务器端密钥对登录cookie进行签名。您可以将此密钥保存在文件中或直接提供。如果您提供一个文件名且文件不存在,将创建一个包含随机生成的密钥的文件(将其保存在文件中更有优势,因为它将在重启后持续存在,因此开发者无需重新登录)。
默认情况下,将密钥保存在$TMP/devauth.txt中,其中$TMP将被替换为适当的系统临时目录。
- logger:
这是一个日志记录记录器实例,或记录器的名称。如果没有提供,将创建一个名称为DevAuth的记录器。这将记录登录、失败的登录、签名密钥的问题等。
- expiration:
登录有效的时间(分钟数)(None表示无过期时间)。这是从登录时间开始计算的,即使您保持活动状态,登录也会过期。
- login_mountpoint:
这是登录发生的URL,默认为/.devauth。然后登录在/.devauth/login,注销在/.devauth/logout。只拦截这两个URL,因此您仍然可以在其他URL处放置内容,如/.devauth/logs(如果您这样做,您可能会将/.devauth替换为针对您应用程序的特定内容)。
Paste Deploy Configuration
您可以使用此配置与Paste Deploy配置(如Pylons和Repoze中使用的)一起使用。它看起来像
[filter:devauth] use = egg:DevAuth allow = 127.0.0.1 192.168.0.0/16 # Toby's computer: # (I hate him so much!) deny = 192.168.0.23 # File created with htpasswd: password_file = %(here)s/developers.htpasswd # Login expires after 1 hour: # So Toby can't hijack my session by using my computer. # (I hate him so much!) expiration = 60 # You'll login in at /.devauth/login (the default): login_mountpoint = /.devauth [app:myapp] blah blah blah [pipeline:main] pipeline = devauth myapp
对于工具开发者
如果您想检查开发者是否已登录,请查找environ['x-wsgiorg.developer_user']。此键的值将是用户名。如果页面仅针对开发者,则返回403 Forbidden。
项目详情
DevAuth-0.1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c348a6c2b8b690208bceb53dd33bdca441502293b58a1b48530a84071e60a1a3 |
|
MD5 | d9382f8c0d161042c0d7b9cad5b7e22a |
|
BLAKE2b-256 | 0e36888371b004ae7f1ad24b4a3ecd69508dd40c1a00a5eb6cac239f922071c0 |