认证工具
django-authlib的Python项目详细描述
authlib是用于实现 无密码身份验证。这是通过发送 通过电子邮件或获取电子邮件进行加密签名的链接 来自第三方提供商的地址,如google、facebook和twitter。 毕竟,另外还需要一个 在大多数网站上可以轻松重置密码时进行身份验证 当攻击者有权访问电子邮件地址时?
目标
- 保持小巧、简单和可扩展。
- 提供工具和实用工具,而不是强加给你一个框架。
用法
- 使用pip将django-authlib安装到您的virtualenv中。
- 将authlib.backends.EmailBackend添加到AUTHENTICATION_BAcKENDS。
- 将authlib添加到INSTALLED_APPS是可选的,并且只有用 如果要使用捆绑的翻译文件。没有 必需的数据库表或任何类型的表。
- 有一个用户名为email的电子邮件字段的用户模型。 为了方便起见,在 authlib.base_user模块、BaseUser和BaseUserManager。 当BaseUserManager作为objects自动可用时 您扩展了BaseUser。
- 使用捆绑视图或编写自己的视图。捆绑视图提供 使用django.contrib.messages的反馈,因此您可能需要检查 这些消息对用户可见。
google、facebook和twitter oauth客户端需要 设置:
- GOOGLE_CLIENT_ID
- GOOGLE_CLIENT_SECRET
- FACEBOOK_CLIENT_ID
- FACEBOOK_CLIENT_SECRET
- TWITTER_CLIENT_ID
- TWITTER_CLIENT_SECRET
请注意,您必须将Twitter应用程序配置为允许电子邮件访问, 默认情况下不启用。
捆绑视图的使用
以下url模式是使用捆绑视图的示例。 现在你必须深入研究代码(在 编写django-authlib的python代码少于500行:
from django.conf.urls import url from authlib import views from authlib.facebook import FacebookOAuth2Client from authlib.google import GoogleOAuth2Client from authlib.twitter import TwitterOAuthClient urlpatterns = [ url( r"^login/$", views.login, name="login", ), url( r"^oauth/facebook/$", views.oauth2, { "client_class": FacebookOAuth2Client, }, name="accounts_oauth_facebook", ), url( r"^oauth/google/$", views.oauth2, { "client_class": GoogleOAuth2Client, }, name="accounts_oauth_google", ), url( r"^oauth/twitter/$", views.oauth2, { "client_class": TwitterOAuthClient, }, name="accounts_oauth_twitter", ), url( r"^email/$", views.email_registration, name="email_registration", ), url( r"^email/(?P<code>[^/]+)/$", views.email_registration, name="email_registration_confirm", ), url( r"^logout/$", views.logout, name="logout", ), ]
管理OAuth2
authlib.admin_oauth应用程序允许使用google oauth2来允许 具有相同电子邮件域的用户以验证Django的 管理界面。必须使用authlib的身份验证 这个的后端(EmailBackend)。
安装如下:
在前面将authlib.admin_oauth添加到INSTALLED_APPS中 django.contrib.admin,以便获取我们的登录模板。
将GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET添加到设置中 如上所述。
添加ADMIN_OAUTH_PATTERNS设置。第一项是域名, 第二个是员工帐户的电子邮件地址。如果没有匹配的人员 帐户存在,验证失败:
ADMIN_OAUTH_PATTERNS = [ (r"@example\.com$", "admin@example.com"), ]
在urlconf中添加一个条目:
urlpatterns = [ url(r"", include("authlib.admin_oauth.urls")), # ... ]
添加https://yourdomain.com/admin/__oauth__/作为有效重定向 你的google开发者控制台中的uri。
此外,它还允许使用callable而不是email ADMIN_OAUTH_PATTERNS设置中的地址;传递可调用的 匹配正则表达式的结果。如果产生的电子邮件地址没有 存在,认证(当然)失败:
ADMIN_OAUTH_PATTERNS = [ (r"^.*@example\.org$", lambda match: match[0]), ]
如果模式成功,但找不到具有人员访问权限的匹配用户 处理将继续下一个模式。这意味着你可以 使用用户的个人帐户(如果他们有)对用户进行身份验证,并且 返回到每个拥有google电子邮件地址的人的帐户 您的域名:
ADMIN_OAUTH_PATTERNS = [ (r"^.*@example\.org$", lambda match: match[0]), (r"@example\.com$", "admin@example.com"), ]
小验证
authlib.little_auth应用程序包含一个带有电子邮件的基本用户模型 作为用户名,如果您不想编写自己的用户,可以使用它 但仍然可以从authlib的身份验证支持中获益。
用法如下:
- 将authlib.little_auth添加到INSTALLED_APPS
- 设置AUTH_USER_MODEL = "little_auth.User"
- 也可以选择遵循上述任何步骤。