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 Flowcode),因为这就是社会认证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安装

  1. 从PyPI安装social-auth-presspassdjango-social-auth,并按照上面的所有说明操作(在General Installation中)。您还应该遵循django-social-auth的设置说明,尽管您可以通过以下步骤对其进行扩充以适合您的用例。在

  2. 将PressPass auth后端添加到SOCIAL_AUTH_AUTHENTICATION_BACKENDS设置中。可能如下所示:

SOCIAL_AUTH_AUTHENTICATION_BACKENDS=('social_auth_presspass.backends.PressPassBackend',)
  1. 添加PressPass后端作为Django身份验证后端。为此,请更改以下设置:
^{pr2}$

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

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_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_authenticatedTrue如果访问者已经通过PressPass进行了身份验证(我们建议您将其用作session.get('presspass_authenticated', False)),因为无法保证此值已定义且非空。在

  • presspass_organizations:访问者被授权作为成员访问你的应用程序的组织列表(每个组织都是从PressPass本身返回的数据序列化的dict)。如果访问者没有使用PressPass进行身份验证,则不会设置此值。所有经过身份验证的访问者将至少是一个组织的成员(即使该组织只是一个自动生成的个人组织)。在

示例

对于使用此包进行身份验证的示例应用程序(代替其自己的用户管理系统),请查看OpenAlerts。在

许可证

这个包是在MIT许可证下授权的(请参见LICENSE)。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中的正则表达式使用什么正则表达式将掩码添加到带有certian模式的字符串中   java我无法使用myfaces 2.0.13和richfaces 4.0 final在Tomcat7中运行我的应用程序   java应用程序在POJO之间不能有重复的代码块   javamysql在Tomcat中创建内存泄漏   java将两种FragmentManager类型导入到同一个类中   需要java代码设计反馈:检查文件中的字符是否为允许的字符   为Java项目记录一个日志文件   java编译时,我收到错误:“unreachable statement”。我如何解决这个问题?   在java中启动运行带空格的外部exe   java如何设置展开/折叠文本视图的动画   java如何从2个整数中获得下一个最接近的整数?   JavaGooglePlaceAPI密钥   java在底部的导航栏中,即使我选择了那个图标,图标也不会突出显示。如何改变它?   java数据类型Double正在显示值0.0   java在不使用数组或任何使用数组或任何其他集合的函数的情况下查找用户给定的n个值的中值   java将dao实体类与mvc表单相链接是件好事吗   如果传递的是最终对象,是否仍应检查null?   java哈希代码出现而不是int,对象名称出现不正确?   针对Android的java Google游戏服务顽固错误