跳转到主要内容

PressPass后端和流水线,用于流行的Python Social Auth库

项目描述

Social Auth PressPass

Social Auth PressPass提供了使用PressPassPython Social Auth的底层和管道实现。它作为social-auth-presspass在PyPI上提供,主要模块导入为social_auth_presspass

当用户使用PressPass登录您的应用程序时,您将收到一份允许用户代表访问您的应用程序的组织列表。

通用安装

无论您的Web框架(或没有)如何,您都需要执行以下几个关键步骤才能开始使用Social Auth PressPass。

创建PressPass应用

使用开发者仪表板创建PressPass应用。名称、价格和访问控制都由您决定。然后,请确保在OpenID Connect部分以下内容:

  • 响应类型必须包括Authorization Code Flowcode),因为这是Social Auth PressPass与PressPass本身进行身份验证的方式。

  • 客户端类型必须设置为Public。(不,这并不意味着任何人都能登录;这意味着客户端身份验证令牌由PressPass本身进行密码学签名。)

  • 重定向URI必须包含您应用程序登录回调的开发URL和生产URL。如果您在Django中将Social Auth安装在auth/路径下,这看起来可能像http://localhost:8000/auth/complete/presspass/。您可以在每行上添加额外的路径。不支持通配符,所以必须是确切的!

链接您的应用程序

在您的设置中(在Django中,这是您的settings.py文件),将SOCIAL_AUTH_PRESSPASS_KEY设置为PressPass开发者仪表板中应用程序的客户端ID

从这里开始,您就可以开始了!现在您可以像使用其他Python Social Auth后端一样将PressPass后端集成到您的应用程序中。也就是说,这有时可能很复杂,因此我们包括了一个下面的Django快速入门。

Django安装

  1. 从PyPI安装social-auth-presspassdjango-social-auth,并遵循上面所有的说明(在通用安装中)。您还应该遵循django-social-auth的设置说明,尽管您可以按照以下步骤根据您的用例对其进行增强。

  2. 将PressPass身份验证后端添加到您的settings.py中的SOCIAL_AUTH_AUTHENTICATION_BACKENDS设置。这可能会看起来像以下内容

SOCIAL_AUTH_AUTHENTICATION_BACKENDS = (
    'social_auth_presspass.backends.PressPassBackend',
)
  1. 将PressPass后端作为Django身份验证后端添加。为此,更改以下设置
AUTHENTICATION_BACKENDS = (
    'social_auth_presspass.backends.PressPassBackend',
    ...
)

如果您仍然希望允许一些用户使用用户名和密码登录(或者如果您想使用管理面板登录系统),请确保在AUTHENTICATION_BACKENDS中保留Django的内置ModelBackend

AUTHENTICATION_BACKENDS = (
    'social_auth_presspass.backends.PressPassBackend',
    'django.contrib.auth.backends.ModelBackend',
)
  1. 如果您想获取有关用户组织的信息,请将PressPass管道添加到您的社交身份认证管道
SOCIAL_AUTH_PIPELINE = (
    ...
    'social_auth_presspass.pipelines.extract_organizations',
    'social_auth_presspass.pipelines.link_organizations_to_session',
    ...
)

请注意,您可能需要将这些管道放在social_detailssocial_uidauth_allowed内置管道之后。请注意,除非您希望在没有使用user_information(即,如果您甚至跟踪用户)的情况下从会话中访问用户的PressPass组织,否则您不需要包括link_organizations_to_session

后端

此包仅提供一个后端,即social_auth_presspass.backends.PressPassBackend。它继承自Python Social Auth OpenID Connect后端,可以像任何其他社交认证后端一样使用。

用户详情

此后端会自动提供presspass_organizations用户详情,它是一个包含有关用户是1)成员且2)有权代表应用程序访问应用程序的组织的信息的列表。每个组织中的关键字段是uuidname

管道

此包提供一个管道,即social_auth_presspass.pipelines.link_organizations_to_session,旨在帮助应用程序利用PressPass认证系统代替其自己的。此管道为PressPass认证的访问者创建两个会话变量

  • presspass_authenticatedTrue如果访问者已经使用PressPass进行了认证(我们建议您使用session.get('presspass_authenticated', False),因为无法保证此值已定义且非空),因为没有保证此值已定义且非空。

  • presspass_organizations:访问者作为成员有权访问您的应用程序的组织列表(每个组织都是从PressPass本身返回的数据序列化的字典)。如果访问者未使用PressPass进行认证,则此值将未设置。所有认证的访问者至少是至少一个组织的成员(即使该组织只是一个自动生成的个人组织)。

示例

有关使用此包进行认证(代替其自己的用户管理系统)的示例应用程序,请参阅OpenAlerts

许可证

此包根据MIT许可证授权(见LICENSE)。

项目详情


下载文件

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

源分布

social-auth-presspass-0.2.0.tar.gz (4.0 kB 查看哈希值)

上传时间

构建分布

social_auth_presspass-0.2.0-py3-none-any.whl (6.3 kB 查看哈希值)

上传时间 Python 3

支持者