使用Authomatic为Plone提供OAuth2/OpenID登录。
项目描述
Plone中的OAuth2 / OpenId认证
功能
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
- Tumblr
- UbuntuOne
- Vimeo
- Xero
- Yahoo
OAuth 2.0
- Amazon
- Behance
- Bitly
- Cosm
- DeviantART
- Eventbrite
- Foursquare
- GitHub
- PayPal
- 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"
}
},
}
安装
使用 pip
将 pas.plugins.authomatic 添加到Plone安装中
pip install pas.plugins.authomatic
或将它作为您的包的 setup.py
依赖项添加
install_requires = [
"pas.plugins.authomatic",
"Products.CMFPlone",
"plone.restapi",
"setuptools",
],
启动Plone并在插件控制面板中激活插件。
配置
使用经典UI,转到 Authomatic
控制面板。
在其中有JSON文本提供了不同授权的配置参数。我们使用JSON是因为其灵活性。
有关每个提供商配置的详细信息,请参阅 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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 30506e1111c21a5d51942f62b9af3a4007b9f0407f754d2175723374eb75adb0 |
|
MD5 | b7feab61b12cb9481354d5bf69e86956 |
|
BLAKE2b-256 | 0054ab06f5060a39bdd0249bf39528cd363a17f1a8f3441dea9508edf6947d4b |
pas.plugins.authomatic-1.2.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b546cb4496b8ee33f8deb6037c7c9e000d2c8182c04cc768f71a7cb979de7109 |
|
MD5 | 6f117b834a0d39c18033f73f56c0f0d6 |
|
BLAKE2b-256 | 12425d76817b1cf2b7b95f5b0776a0a2185a1a7774130fb6895db2c107e698b5 |