跳转到主要内容

使用Authomatic为Plone提供OAuth2/OpenID登录。

项目描述

logo

Plone中的OAuth2 / OpenId认证

PyPI PyPI - Python Version PyPI - Wheel PyPI - License PyPI - Status

PyPI - Plone Versions

Code analysis checks Tests Code Style

GitHub contributors GitHub Repo stars

功能

pas.plugins.authomatic 通过集成出色的 Authomatic 包,为Plone站点提供OAuth2和OpenID登录功能。

Authomatic is a framework agnostic library
for Python web applications
with a minimalistic but powerful interface
which simplifies authentication of users
by third party providers like Facebook or Twitter
through standards like OAuth and OpenID.

作者:Peter Hudec,在Authomatic网站上

支持的提供商

默认情况下,pas.plugins.authomatic 支持以下提供商

OAuth 1.0a

  • Bitbucket
  • Flickr
  • Meetup
  • Plurk
  • Twitter
  • Tumblr
  • UbuntuOne
  • Vimeo
  • Xero
  • Xing
  • Yahoo

OAuth 2.0

  • Amazon
  • Behance
  • Bitly
  • Cosm
  • DeviantART
  • Eventbrite
  • Facebook
  • Foursquare
  • GitHub
  • Google
  • LinkedIn
  • PayPal
  • Reddit
  • Viadeo
  • VK
  • WindowsLive
  • Yammer
  • Yandex

OpenID

  • python-openid
  • 基于Google App Engine的OpenID。

文档

此包支持使用Volto或经典UI的Plone站点。

对于经典UI

  • 此包创建了一个名为 authomatic-handler 的视图,您可以使用不同的提供商登录。
  • 该视图还可以用于将提供商的标识添加到现有账户。
  • 提供商是在URL中选择的,因此如果您调用 /authomatic-handler/PROVIDER,您将使用 PROVIDER 进行登录。

对于Volto

  • 端点 @login 使用 GET:返回认证选项列表
  • 端点 @login-authomatic 使用 GET:提供启动OAuth过程的信息。
  • 端点 @login-authomatic 使用 POST:处理OAuth登录并返回JSON Web令牌(JWT)。
  • 对于Volto站点,您还必须安装 @plone-collective/volto-authomatic

目前,配置是通过经典UI完成的

  • 插件配置可在控制面板 @@authomatic-controlpanel 中找到(在用户下链接)
  • 示例JSON配置(第一级键是提供商)
{
  "github": {
    "display": {
      "title": "Github",
      "cssclasses": {
          "button": "plone-btn plone-btn-default",
          "icon": "glypicon glyphicon-github"
      },
      "as_form": false
    },
    "propertymap": {
      "email": "email",
      "link": "home_page",
      "location": "location",
      "name": "fullname"
    },
    "class_": "authomatic.providers.oauth2.GitHub",
    "consumer_key": "5c4901d141e736f114a7",
    "consumer_secret": "d4692ca3c0ab6cc1f8b28d3ccb1ea15b61e7ef5c",
    "access_headers": {
      "User-Agent": "Plone Authomatic Plugin"
    }
  },
}

安装

使用 pippas.plugins.authomatic 添加到Plone安装中

pip install pas.plugins.authomatic

或将它作为您的包的 setup.py 依赖项添加

    install_requires = [
        "pas.plugins.authomatic",
        "Products.CMFPlone",
        "plone.restapi",
        "setuptools",
    ],

启动Plone并在插件控制面板中激活插件。

配置

使用经典UI,转到 Authomatic 控制面板。

Screenshot

在其中有JSON文本提供了不同授权的配置参数。我们使用JSON是因为其灵活性。

Screenshot

有关每个提供商配置的详细信息,请参阅 Authomatic提供商部分

配置有一些差异

  • "class_" 的值必须是一个字符串,然后将其解析为点路径。

  • 每个提供商都可以获得一个可选的条目 display,其中包含如下子项

    • title,在模板中使用它而不是部分名称。
    • iconclasses,在模板中应用于 span。
    • buttonclasses,在模板中应用于按钮。
    • as_form(true/false),用于OpenId提供商的表单。
  • 每个提供商都可以获得一个可选的条目 propertymap。它将 authomatic/provider 用户属性映射到 plone 用户属性,例如 "fullname": "name",。请查看每个提供商的文档,了解哪些属性可用。

源代码和贡献

如果您想帮助开发(改进、更新、修复错误、...)pas.plugins.authomatic,这是一个很好的想法!

请在分支上进行较大的更改,并提交拉取请求。

pas.plugins.authomatic的创建者是Jens Klein。

我们感激任何贡献,如果需要在PyPI上发布版本,请联系我们其中的任何人。

开发

您需要一个版本3.7或更高版本的正常工作的python环境(系统、virtualenv、pyenv等)。

然后使用以下命令安装依赖项和开发实例:

make build

运行此软件包的测试

make test

默认情况下,我们使用6.x系列中的最新Plone版本。

许可证

该项目受GPLv2许可协议的许可。

变更日志

1.2.0 (2023-09-13)

  • 添加西班牙语翻译。@macagua

  • 更好地处理身份数据中的值。@cekk

  • 添加username_userid用户ID工厂。@ericof

  • 在POST调用中注释事务以验证用户。@ericof

1.1.2 (2023-03-15)

  • 支持Python 3.11以兼容Plone 6。@ericof

  • 代码风格改进。@ericof

1.1.1 (2022-10-14)

  • 将plone/code-analysis-action升级到版本2。@ericof

  • 修复与CHANGELOG.md未包含在源代码包中相关的打包问题。@ericof

  • 支持Python 3.10以兼容Plone 6。@ericof

1.1.0 (2022-10-10)

  • 添加plone.restapi适配器以在Volto中显示控制面板。@erral

  • 通过提供的cookie添加将用户重定向到next_url的可能性。@avoinea

1.0.0 (2022-07-25)

  • 使用plone/plone-setup GitHub动作。@ericof

  • 添加巴西葡萄牙语翻译。@ericof

  • 使用plone/code-analysis-action GitHub动作进行代码分析。@ericof

  • 修复doChangeUser接受2个位置参数,但提供了3个参数的问题。@avoinea

1.0b2(2021-08-18)

  • 修复tox设置,将CI从TravisCI迁移到GitHub Actions。@jensens

  • 应用代码风格Black、Isort、zpretty和Pyupgrade。@jensens

  • 为插件添加缺少的no-op方法以供IUserManagement使用。这修复了测试。@jensens

  • 停止支持Python 2,并因此需要Plone 5.2。@jensens

  • 包含CMFCore中的权限以避免ComponentLookupError。@bsuttor

  • 修复Zope 5上的ModuleNotFoundError:没有名为'App.class_init'的模块。@bsuttor

  • 添加法语翻译。@mpeeters

  • PAS事件通知IPrincipalCreatedEvent。@jensens

  • Python 3和Plone 52兼容性。@cekk

  • 修复#44:在列举用户时严格实现exact_match。@allusa

  • 允许用户删除。@cekk

  • 停止支持Plone < 5.1.x。@cekk

  • 修复#54:PrincipalCreated事件的通知。@ericof

  • 关闭#55:支持plone.restapi。@ericof

1.0b1(2017-11-20)

  • 略微美化登录模式。@jensens

  • 修复#33"页面不存在控制设置"。@jensens

  • 修复#31:帮助文本中链接到JSON配置文档的链接已损坏。@jensens

  • 修复#28:卸载后,plone.external_login_url仍然注册并且登录损坏。@jensens

  • 测试Plone 5.1支持(工作正常,只需控制面板图标需要一些调整)。添加5.1的Buildout配置。@jensens

  • 安装:在安装表单中隐藏非有效配置文件。@jensens

  • 添加额外的检查以确保永远不会存储空/None键。@jensens

  • 修复#27:登录后更新用户数据。@jensens

  • 修复在enumerateUsers插件中过滤用户时的错误,该插件始终返回所有用户。@sneridagh

  • 修复登录消息中的拼写错误和措辞。@tkimnguyen

1.0a7(2016-02-15)

  • 对None用户的解决方案。@sneridagh

1.0a6(2016-01-11)

  • 修复#21:当您注销然后再次登录时,会创建一个新用户。@jensens

1.0a5(2015-12-04)

  • 修复:#18 "提供者登录"选项对于"Plone用户ID生成器"似乎已损坏。@jensens

  • 修复:标题指示是否添加了身份。@jensens

  • 修复:正确使用plone.protect。@jensens

1.0a4(2015-11-20)

  • 添加德语翻译。@jensens

  • 恢复Plone 4兼容性 @keul

  • 添加意大利语翻译 @keul

  • 适当的卸载 @keul

1.0a3 (2015-11-15)

  • 重构authomatic-handler以启用添加身份。 @jensens

  • 修复:使用设置中的秘密作为Authomatic的秘密。 @jensens

  • 将视图authomatic-login重命名为authomatic-handler,因为此视图也将用于添加身份(有时需要在提供方侧注册URL,我们只想做一次)。 @jensens

1.0a2 (2015-11-14)

  • 对JSON进行最小验证。 @jensens

  • 如果从登录视图调用,将整个remember过程作为safeWrite。我们不能在这里传递认证令牌,因为重定向和预期返回URL。 @jensens

  • 允许选择用户ID生成策略。 @jensens

  • 允许一个用户有多个服务。这在幕后有很大的变化。 @jensens

  • 使用authomatic.core.User属性而不是原始提供方数据。关闭#9 @ericof

1.0a1 (2015-10-28)

  • 初始发布。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪一个,请了解更多关于安装包的信息。

源分发

pas.plugins.authomatic-1.2.0.tar.gz (192.4 kB 查看散列)

上传时间

构建分发

pas.plugins.authomatic-1.2.0-py3-none-any.whl (69.4 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面