PressPass后端和管道,用于流行的Python社交认证库
social-auth-presspass的Python项目详细描述
社会认证出版社
Social Auth PressPass
为使用PressPass和{a2}提供后端和管道实现。它在PyPI上以social-auth-presspass
的形式提供,主模块导入是social_auth_presspass
。在
当用户使用PressPass登录您的应用程序时,您将收到允许用户代表其访问您的应用程序的组织列表。在
一般安装
不管您的web框架如何(或是否缺少),要开始使用Social Auth PressPass,您需要采取一些关键步骤。在
创建PressPass应用程序
使用开发人员仪表板创建PressPass应用程序。名称、价格和访问控制都由您决定。然后,在OpenID Connect部分确保以下内容:
- 在
响应类型必须包括
在Authorization Code Flow
(code
),因为这就是社会认证PressPass与PressPass本身进行身份验证的方式。在 - 在
Client type必须设置为
在Public
。(不,这并不意味着任何人都可以登录;这意味着客户端身份验证令牌由PressPass本身加密签名。) - 在
Redirect URIs必须同时包含应用程序登录回调的开发URL和生产URL。如果您在Django中的
在auth/
路径下安装了Social Auth,这可能看起来像http://localhost:8000/auth/complete/presspass/
。可以在每行上添加其他路径。不支持通配符,所以要精确!在
链接应用程序
在您的设置(在Django中,这是您的settings.py
文件),从PressPass开发人员仪表板将SOCIAL_AUTH_PRESSPASS_KEY
设置为应用程序的client ID。在
From here, you're ready to go! Now you can integrate the PressPass backend into your app just as you would any other Python Social Auth backend. That being said, this can sometimes be tricky, so we've included a Django quickstart below.
Django安装
- 在
从PyPI安装
在social-auth-presspass
和django-social-auth
,并按照上面的所有说明操作(在General Installation中)。您还应该遵循django-social-auth
的设置说明,尽管您可以通过以下步骤对其进行扩充以适合您的用例。在 - 在
将PressPass auth后端添加到
在SOCIAL_AUTH_AUTHENTICATION_BACKENDS
设置中。可能如下所示:
SOCIAL_AUTH_AUTHENTICATION_BACKENDS=('social_auth_presspass.backends.PressPassBackend',)
- 添加PressPass后端作为Django身份验证后端。为此,请更改以下设置:
如果您仍然希望允许某些用户使用用户名和密码登录(或者如果您想使用管理面板登录系统),请确保将Django的内置ModelBackend
保存在AUTHENTICATION_BACKENDS
中:
AUTHENTICATION_BACKENDS=('social_auth_presspass.backends.PressPassBackend','django.contrib.auth.backends.ModelBackend',)
- 如果需要有关用户组织的信息,请将PressPass管道添加到您的社交身份验证管道中:
SOCIAL_AUTH_PIPELINE=(...'social_auth_presspass.pipelines.extract_organizations','social_auth_presspass.pipelines.link_organizations_to_session',...)
请注意,您可能应该将这些管道放在内置管道social_details
、social_uid
和{link_organizations_to_session
,除非您想从用户会话内部访问其PressPass组织,而不使用他们的user_information
(也就是说,如果您甚至跟踪用户的话)。在
后端
这个包只提供一个后端social_auth_presspass.backends.PressPassBackend
。它继承了Python的Social Auth OpenID Connect后端,可以像任何其他Social Auth后端一样使用。在
用户详情
此后端自动提供presspass_organizations
用户详细信息,这是一个列表,其中包含有关用户1)成员和2)代表其访问应用程序的组织的信息。每个组织中的关键字段是uuid
和{
管道
这个软件包提供了一个管道social_auth_presspass.pipelines.link_organizations_to_session
,旨在帮助应用程序利用PressPass身份验证系统,而不是自己的。此管道为PressPass身份验证的访问者创建两个session变量:
- 在
在presspass_authenticated
:True
如果访问者已经通过PressPass进行了身份验证(我们建议您将其用作session.get('presspass_authenticated', False))
,因为无法保证此值已定义且非空。在 - 在
在presspass_organizations
:访问者被授权作为成员访问你的应用程序的组织列表(每个组织都是从PressPass本身返回的数据序列化的dict)。如果访问者没有使用PressPass进行身份验证,则不会设置此值。所有经过身份验证的访问者将至少是一个组织的成员(即使该组织只是一个自动生成的个人组织)。在
示例
对于使用此包进行身份验证的示例应用程序(代替其自己的用户管理系统),请查看OpenAlerts。在
许可证
这个包是在MIT许可证下授权的(请参见LICENSE
)。在
- 项目
标签: