跳转到主要内容

用于开发人员访问应用程序的认证

项目描述

简介

许多调试工具提供通过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_filesecret

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 (13.4 kB 查看哈希值)

上传时间

由以下支持