跳转到主要内容

repoze.who.plugins.browserid

项目描述

这是repoze.who插件,用于通过Mozilla的Persona项目进行身份验证,也称为BrowserID

https://persona.org/

它支持使用PyBrowserID客户端库验证BrowserID断言。目前PyBrowserID默认通过将其发布到persona.org验证服务来验证断言,但它也支持本地验证断言的初步支持。随着协议变得更加稳定,本地验证将成为默认值。

插件的配置可以从标准的repoze.who配置文件中完成,如下所示

[plugin:browserid]
use = repoze.who.plugins.browserid:make_plugin
audiences = www.mysite.com
rememberer_name = authtkt

[plugin:authtkt]
use = repoze.who.plugins.auth_tkt:make_plugin
secret = My Special Secret

[identifiers]
plugins = authtkt browserid

[authenticators]
plugins = authtkt browserid

[challengers]
plugins = browserid

请注意,我们已经将BrowserID插件与标准的AuthTkt插件配对,以便它可以在请求之间记住用户的登录。

自定义

可以在配置文件中指定以下设置来自定义插件的行为

audiences

一个空格分隔的列表,包含可接受的hostname或glob模式作为BrowserID断言的受众。任何其受众不在列表中的断言将被拒绝。

必须指定此设置的值,因为它对于BrowserID的安全性至关重要。有关更多详细信息,请参阅下面的安全说明部分。

rememberer_name

另一个应调用来记住/忘记身份验证的repoze.who插件名称。这通常是一个签名cookie实现,例如内置的auth_tkt插件。如果未指定或为None,则不会记住身份验证。

postback_url

将BrowserID凭据发送以进行验证的URL。默认值希望无冲突:/repoze.who.plugins.browserid.postback。

assertion_field

在POST表单字段中查找BrowserID断言的名称。默认值是“断言”。

来源字段:

用于查找引用页面的POST表单字段的名称,用户登录处理后将重定向到该页面。默认值是“来源”。

csrf字段:

用于查找CSRF保护令牌的POST表单字段的名称。默认值是“csrf_token”。如果设置为空字符串,则禁用CSRF检查。

csrf_cookie_name:

设置和查找CSRF保护令牌的cookie名称。默认cookie名称是“browserid_csrf_token”。如果设置为空字符串,则禁用CSRF检查。

challenge_body:

登录页面HTML的存储位置,可以是点分Python引用或文件名。包含的HTML可以使用Python字符串插值语法来包含挑战细节,例如使用%(csrf_token)s来包含CSRF令牌。

verifier:

用于检查断言的PyVEP验证器对象,或此类对象的点分Python名称。默认值是vep.RemoteVerifier(),这对于大多数目的应该是合适的。

check_https:

布尔值,表示是否拒绝通过加密连接进行的登录尝试。默认值是False。

check_referer:

布尔值,表示是否拒绝引用头不匹配预期受众的登录尝试。默认情况下,仅对安全连接执行此检查。

安全注意事项

CSRF保护

此插件尝试提供一些基本的登录-CSRF攻击保护,如Barth等人在“Robust Defenses for Cross-Site Request Forgery”中所述。

http://seclab.stanford.edu/websec/csrf/csrf.pdf

在上述论文的术语中,它结合了独立于会话的nonce和严格的安全连接引用检查。您可以通过调整“csrf_cookie_name”、“check_referer”和“check_https”设置来调整保护。

受众检查

BrowserID使用“受众”的概念来保护被盗登录。受众将BrowserID断言绑定到特定的主机,这样攻击者就不能在一个网站上收集断言然后用于登录到另一个网站。

此插件默认执行严格的受众检查。您必须在创建插件时提供一组可接受的受众字符串,并且它们应该特定于您的应用程序。例如,如果您的应用程序在三个不同的主机名上提供服务请求 http://mysite.comhttp://www.mysite.comhttp://uploads.mysite.com,则您可能提供

[plugin:browserid]
use = repoze.who.plugins.browserid:make_plugin
audiences = mysite.com *.mysite.com

如果您的应用程序对HTTP Host头执行严格的检查,则您可以指示插件使用Host头作为受众,通过留空列表来实现。

[plugin:browserid]
use = repoze.who.plugins.browserid:make_plugin
audiences =

这不是默认行为,因为在某些系统上可能不安全。

0.5.0 - 2012-09-11

  • 修复javascript以使用navigator.id.get()而不是已弃用的navigator.id.getVerifiedEmail。

0.4.0 - 2012-07-17

  • 从PyVEP迁移到PyBrowserID。

0.3.1 - 2012-01-30

  • 不要在challenge_body中阻塞unicode;感谢catlee。

  • 更新许可证为MPL 2.0。

0.3.0 - 2012-01-06

  • 更新以与PyVEP>=0.3.0兼容的API。

0.2.1 - 2011-12-07

  • 更新以与PyVEP>=0.2.0兼容的API。

0.2.0 - 2011-12-01

  • 将验证代码重构为名为“PyVEP”的独立库,现在它是依赖项。

0.1.0 - 2011-11-15

  • 初始版本。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

repoze.who.plugins.browserid-0.5.0.tar.gz (12.9 kB 查看哈希值)

上传时间

由以下组织支持