pas.plugins.oidc 2.0.0a1__tar.gz → 2.0.0b2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/.pre-commit-config.yaml +6 -6
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/CHANGES.md +38 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/MANIFEST.in +2 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/PKG-INFO +67 -18
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/README.md +16 -13
- pas.plugins.oidc-2.0.0b2/docs/screenshot-settings.png +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/pyproject.toml +11 -4
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/setup.py +14 -5
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/__init__.py +3 -1
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/configure.zcml +2 -7
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/controlpanel/classic.py +166 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/controlpanel/configure.zcml +27 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/controlpanel/deserializer.py +80 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/controlpanel/oidc.py +20 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/controlpanel/serializer.py +45 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/interfaces.py +124 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales/de/LC_MESSAGES/pas.plugins.oidc.mo +0 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales/de/LC_MESSAGES/pas.plugins.oidc.po +167 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/locales/en/LC_MESSAGES/pas.plugins.oidc.mo +0 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales/en/LC_MESSAGES/pas.plugins.oidc.po +164 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales/es/LC_MESSAGES/pas.plugins.oidc.mo +0 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales/es/LC_MESSAGES/pas.plugins.oidc.po +169 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales/pas.plugins.oidc.pot +171 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/locales/update.py +1 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/plugins.py +36 -8
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/profiles/default/controlpanel.xml +21 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/profiles/default/metadata.xml +1 -1
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/services/login/get.py +13 -8
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/services/oidc/oidc.py +8 -6
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/setuphandlers.py +5 -13
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/upgrades/__init__.py +0 -0
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/upgrades/configure.zcml +25 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/utils.py +9 -4
- pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/www/oidcPluginForm.zpt +66 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/PKG-INFO +67 -18
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/SOURCES.txt +16 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/requires.txt +9 -1
- pas.plugins.oidc-2.0.0b2/tests/controlpanel/conftest.py +59 -0
- pas.plugins.oidc-2.0.0b2/tests/controlpanel/test_controlpanel_api.py +24 -0
- pas.plugins.oidc-2.0.0b2/tests/functional/test_controlpanel_classic.py +19 -0
- pas.plugins.oidc-2.0.0b2/tests/keycloak/import/.gitkeep +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/keycloak/import/plone-realm.json +255 -23
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/keycloak/import/plone-test-realm.json +267 -24
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/services/conftest.py +12 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/services/test_services_login_get.py +1 -1
- pas.plugins.oidc-2.0.0b2/tests/services/test_servides_login_get_multiple_plugins.py +33 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/setup/test_setup_install.py +1 -1
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/utils/test_utils_flow.py +1 -1
- pas.plugins.oidc-2.0.0a1/docs/screenshot-settings.png +0 -0
- pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/interfaces.py +0 -6
- pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/locales/en/LC_MESSAGES/pas.plugins.oidc.po +0 -35
- pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/locales/es/LC_MESSAGES/pas.plugins.oidc.mo +0 -0
- pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/locales/es/LC_MESSAGES/pas.plugins.oidc.po +0 -39
- pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/locales/pas.plugins.oidc.pot +0 -38
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/.coveragerc +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/CONTRIBUTORS.md +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/LICENSE.GPL +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/LICENSE.md +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/Makefile +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/constraints.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/docs/icon.png +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/instance.yaml +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/requirements-docs.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/requirements.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/setup.cfg +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/browser/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/browser/configure.zcml +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/browser/view.py +0 -0
- {pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/locales → pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/controlpanel}/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/services → pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/locales}/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/profiles/default/browserlayer.xml +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/profiles/uninstall/browserlayer.xml +0 -0
- {pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/services/login → pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/services}/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/services/configure.zcml +0 -0
- {pas.plugins.oidc-2.0.0a1/src/pas/plugins/oidc/services/oidc → pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/services/login}/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/services/login/configure.zcml +0 -0
- /pas.plugins.oidc-2.0.0a1/tests/keycloak/import/.gitkeep → /pas.plugins.oidc-2.0.0b2/src/pas/plugins/oidc/services/oidc/__init__.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/services/oidc/configure.zcml +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/session.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas/plugins/oidc/testing.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/dependency_links.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/entry_points.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/namespace_packages.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/not-zip-safe +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/src/pas.plugins.oidc.egg-info/top_level.txt +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/conftest.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/docker-compose.yml +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/functional/conftest.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/functional/test_functional.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/keycloak/Dockerfile +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/plugin/test_plugin.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/services/test_services_oidc_get.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/services/test_services_oidc_post.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/setup/test_setup_uninstall.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/utils/test_utils_str.py +0 -0
- {pas.plugins.oidc-2.0.0a1 → pas.plugins.oidc-2.0.0b2}/tests/utils/test_utils_url.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Generated from:
|
|
2
|
-
# https://github.com/plone/meta/tree/
|
|
2
|
+
# https://github.com/plone/meta/tree/main/config/default
|
|
3
3
|
# See the inline comments on how to expand/tweak this configuration file
|
|
4
4
|
ci:
|
|
5
5
|
autofix_prs: false
|
|
@@ -7,16 +7,16 @@ ci:
|
|
|
7
7
|
|
|
8
8
|
repos:
|
|
9
9
|
- repo: https://github.com/asottile/pyupgrade
|
|
10
|
-
rev: v3.15.
|
|
10
|
+
rev: v3.15.2
|
|
11
11
|
hooks:
|
|
12
12
|
- id: pyupgrade
|
|
13
13
|
args: [--py38-plus]
|
|
14
14
|
- repo: https://github.com/pycqa/isort
|
|
15
|
-
rev: 5.
|
|
15
|
+
rev: 5.13.2
|
|
16
16
|
hooks:
|
|
17
17
|
- id: isort
|
|
18
18
|
- repo: https://github.com/psf/black
|
|
19
|
-
rev:
|
|
19
|
+
rev: 24.4.2
|
|
20
20
|
hooks:
|
|
21
21
|
- id: black
|
|
22
22
|
- repo: https://github.com/collective/zpretty
|
|
@@ -32,7 +32,7 @@ repos:
|
|
|
32
32
|
# """
|
|
33
33
|
##
|
|
34
34
|
- repo: https://github.com/PyCQA/flake8
|
|
35
|
-
rev:
|
|
35
|
+
rev: 7.0.0
|
|
36
36
|
hooks:
|
|
37
37
|
- id: flake8
|
|
38
38
|
|
|
@@ -71,7 +71,7 @@ repos:
|
|
|
71
71
|
- id: check-python-versions
|
|
72
72
|
args: ['--only', 'setup.py,pyproject.toml']
|
|
73
73
|
- repo: https://github.com/collective/i18ndude
|
|
74
|
-
rev: "6.
|
|
74
|
+
rev: "6.2.0"
|
|
75
75
|
hooks:
|
|
76
76
|
- id: i18ndude
|
|
77
77
|
|
|
@@ -9,6 +9,44 @@
|
|
|
9
9
|
|
|
10
10
|
<!-- towncrier release notes start -->
|
|
11
11
|
|
|
12
|
+
## 2.0.0b2 (2024-12-09)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### New features:
|
|
16
|
+
|
|
17
|
+
- Update the Deutsch translation [macagua] [#60](https://github.com/collective/pas.plugins.oidc/issues/60)
|
|
18
|
+
- Implement control panel to configure pas.plugins.oidc [@ericof] [#65](https://github.com/collective/pas.plugins.oidc/issues/65)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Documentation:
|
|
22
|
+
|
|
23
|
+
- Fixed port numbers on README file [macagua] [#51](https://github.com/collective/pas.plugins.oidc/issues/51)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## 2.0.0b1 (2024-06-25)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### New features:
|
|
30
|
+
|
|
31
|
+
- Added Deutsch translation
|
|
32
|
+
[@macagua] [#45](https://github.com/collective/pas.plugins.oidc/issues/45)
|
|
33
|
+
- Allow multiple instances of OIDC plugin in a given Plone site @erral [#48](https://github.com/collective/pas.plugins.oidc/issues/48)
|
|
34
|
+
- Notify user events on creation and authentication. [@Arkusm][@ericof] [#53](https://github.com/collective/pas.plugins.oidc/issues/53)
|
|
35
|
+
- Updated the latest .po templates for translate
|
|
36
|
+
Updated Spanish translation
|
|
37
|
+
[@macagua] [#55](https://github.com/collective/pas.plugins.oidc/issues/55)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Internal:
|
|
41
|
+
|
|
42
|
+
- Update configuration files @plone
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Documentation:
|
|
46
|
+
|
|
47
|
+
- Recommend using `[pas.plugins.keycloakgroups](https://pypi.org/project/pas.plugins.keycloakgroups/)` for groups support with Keycloak [@ericof] [#42](https://github.com/collective/pas.plugins.oidc/issues/42)
|
|
48
|
+
|
|
49
|
+
|
|
12
50
|
## 2.0.0a1 (2023-11-23)
|
|
13
51
|
|
|
14
52
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pas.plugins.oidc
|
|
3
|
-
Version: 2.0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 2.0.0b2
|
|
4
|
+
Summary: OIDC support for Plone sites
|
|
5
5
|
Home-page: https://github.com/collective/pas.plugins.oidc
|
|
6
6
|
Author: mamico
|
|
7
7
|
Author-email: mauro.amico@gmail.com
|
|
@@ -9,8 +9,8 @@ License: GPL version 2
|
|
|
9
9
|
Project-URL: PyPI, https://pypi.python.org/pypi/pas.plugins.oidc
|
|
10
10
|
Project-URL: Source, https://github.com/collective/pas.plugins.oidc
|
|
11
11
|
Project-URL: Tracker, https://github.com/collective/pas.plugins.oidc/issues
|
|
12
|
-
Keywords: Python Plone CMS
|
|
13
|
-
Classifier: Development Status ::
|
|
12
|
+
Keywords: Python Plone CMS PAS Authentication OAuth OIDC
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
14
|
Classifier: Environment :: Web Environment
|
|
15
15
|
Classifier: Framework :: Plone
|
|
16
16
|
Classifier: Framework :: Plone :: Addon
|
|
@@ -28,13 +28,21 @@ License-File: LICENSE.GPL
|
|
|
28
28
|
License-File: LICENSE.md
|
|
29
29
|
Requires-Dist: setuptools
|
|
30
30
|
Requires-Dist: Plone
|
|
31
|
+
Requires-Dist: Zope
|
|
32
|
+
Requires-Dist: Products.CMFCore
|
|
31
33
|
Requires-Dist: plone.api
|
|
34
|
+
Requires-Dist: plone.app.registry
|
|
35
|
+
Requires-Dist: plone.base
|
|
36
|
+
Requires-Dist: plone.protect
|
|
32
37
|
Requires-Dist: plone.restapi>=8.34.0
|
|
33
38
|
Requires-Dist: oic
|
|
39
|
+
Requires-Dist: z3c.form
|
|
34
40
|
Provides-Extra: test
|
|
35
|
-
Requires-Dist:
|
|
41
|
+
Requires-Dist: zope.pytestlayer; extra == "test"
|
|
42
|
+
Requires-Dist: plone.app.contenttypes; extra == "test"
|
|
36
43
|
Requires-Dist: plone.app.testing; extra == "test"
|
|
37
44
|
Requires-Dist: plone.restapi[test]; extra == "test"
|
|
45
|
+
Requires-Dist: plone.testing; extra == "test"
|
|
38
46
|
Requires-Dist: pytest-cov; extra == "test"
|
|
39
47
|
Requires-Dist: pytest-plone>=0.2.0; extra == "test"
|
|
40
48
|
Requires-Dist: pytest-docker; extra == "test"
|
|
@@ -46,7 +54,7 @@ Requires-Dist: pytest-mock; extra == "test"
|
|
|
46
54
|
Requires-Dist: requests-mock; extra == "test"
|
|
47
55
|
|
|
48
56
|
|
|
49
|
-
<div align="center"><img alt="logo" src="
|
|
57
|
+
<div align="center"><img alt="pas.plugins.oidc logo" src="https://raw.githubusercontent.com/collective/pas.plugins.oidc/main/docs/icon.png" width="70" /></div>
|
|
50
58
|
|
|
51
59
|
<h1 align="center">pas.plugins.oidc</h1>
|
|
52
60
|
|
|
@@ -78,10 +86,13 @@ OAuth 2.0 should work as well because OpenID Connect is built on top of this pro
|
|
|
78
86
|
- PAS plugin, although currently no interfaces are activated.
|
|
79
87
|
- Three browser views for this PAS plugin, which are the main interaction with the outside world.
|
|
80
88
|
|
|
89
|
+
### Group Enumeration
|
|
90
|
+
|
|
91
|
+
If you need to support group enumeration from a Keycloak server, we recommend installing the package [pas.plugins.keycloakgroups](https://pypi.org/project/pas.plugins.keycloakgroups/).
|
|
81
92
|
|
|
82
93
|
## Installation
|
|
83
94
|
|
|
84
|
-
This package supports Plone sites using Volto and
|
|
95
|
+
This package supports Plone sites using Volto and Classic UI.
|
|
85
96
|
|
|
86
97
|
For proper Volto support, the requirements are:
|
|
87
98
|
|
|
@@ -129,7 +140,7 @@ When using this plugin with a [Volto frontend](https://6.docs.plone.org/volto/in
|
|
|
129
140
|
* **Login URL**: `<Path to your Plone site>`/login
|
|
130
141
|
* **Logout URL**: `<Path to your Plone site>`/logout
|
|
131
142
|
|
|
132
|
-
Also, on the OpenID provider, configure the Redirect URL as **`<Path to your Plone site>`/
|
|
143
|
+
Also, on the OpenID provider, configure the Redirect URL as **`<Path to your Plone site>`/login-oidc/oidc**.
|
|
133
144
|
|
|
134
145
|
|
|
135
146
|
#### Classic UI
|
|
@@ -209,9 +220,9 @@ So, for Keycloak, it does not matter if we use the default or legacy mode if the
|
|
|
209
220
|
*Notes:*
|
|
210
221
|
|
|
211
222
|
* If legacy `redirect_uri` parameter is disabled in Keycloak, this is the default since version 18 of Keycloak according
|
|
212
|
-
to this comment in *
|
|
223
|
+
to this comment in *Stack Overflow*: https://stackoverflow.com/a/72142887.
|
|
213
224
|
* The plugin will work only if the `Use deprecated redirect_uri for logout url(/Plone/acl_users/oidc/logout)`
|
|
214
|
-
option is un-checked at the plugin properties at http://localhost:
|
|
225
|
+
option is un-checked at the plugin properties at http://localhost:8080/Plone/acl_users/oidc/manage_propertiesForm.
|
|
215
226
|
|
|
216
227
|
#### Additional Documentation
|
|
217
228
|
|
|
@@ -223,9 +234,9 @@ Specifically, here we will use a Docker image, so follow the instructions on how
|
|
|
223
234
|
* Make sure **pas.plugins.oidc** is installed.
|
|
224
235
|
* Start Plone and create a Plone site with id Plone.
|
|
225
236
|
* In the Add-ons control panel, install `pas.plugins.oidc`.
|
|
226
|
-
* In the ZMI go to the plugin properties at http://localhost:
|
|
237
|
+
* In the ZMI go to the plugin properties at http://localhost:8080/Plone/acl_users/oidc/manage_propertiesForm
|
|
227
238
|
* Set these properties:
|
|
228
|
-
* `OIDC/Oauth2 Issuer`: http://127.0.0.1:
|
|
239
|
+
* `OIDC/Oauth2 Issuer`: http://127.0.0.1:8180/realms/plone/
|
|
229
240
|
* `Client ID`: *plone* (**Warning:** This property must match the `Client ID` you have set in Keycloak.)
|
|
230
241
|
* `Client secret`: *12345678* (**Warning:** This property must match the `Client secret` you have get in Keycloak.)
|
|
231
242
|
* `Use deprecated redirect_uri for logout url` checked. Use this if you need to run old versions of Keycloak.
|
|
@@ -239,14 +250,14 @@ Specifically, here we will use a Docker image, so follow the instructions on how
|
|
|
239
250
|
|
|
240
251
|
See this screenshot:
|
|
241
252
|
|
|
242
|
-
|
|
253
|
+

|
|
243
254
|
|
|
244
255
|
#### Login
|
|
245
256
|
|
|
246
|
-
Go to the other browser, or logout as admin from [Keycloak Admin Console](http://
|
|
257
|
+
Go to the other browser, or logout as admin from [Keycloak Admin Console](http://127.0.0.1:8180/admin).
|
|
247
258
|
Currently, the Plone login form is unchanged.
|
|
248
259
|
|
|
249
|
-
Instead, for testing go to the login page of the plugin: http://localhost:
|
|
260
|
+
Instead, for testing go to the login page of the plugin: http://localhost:8080/Plone/acl_users/oidc/login,
|
|
250
261
|
this will take you to Keycloak to login, and then return. You should now be logged in to Plone, and see the
|
|
251
262
|
*full name* and *email*, if you have set this in Keycloak.
|
|
252
263
|
|
|
@@ -255,7 +266,7 @@ this will take you to Keycloak to login, and then return. You should now be logg
|
|
|
255
266
|
If the login did work as expected you can try to Plone logout.
|
|
256
267
|
Currently, the Plone logout form is unchanged.
|
|
257
268
|
|
|
258
|
-
Instead, for testing go to the logout page of the plugin: http://localhost:
|
|
269
|
+
Instead, for testing go to the logout page of the plugin: http://localhost:8080/Plone/acl_users/oidc/logout,
|
|
259
270
|
this will take you to Keycloak to logout, and then return to the post-logout redirect URL.
|
|
260
271
|
|
|
261
272
|
## Technical Decisions
|
|
@@ -268,8 +279,8 @@ and comes back from there.
|
|
|
268
279
|
The plugin has 2 ways of working with sessions:
|
|
269
280
|
|
|
270
281
|
- Use the Zope Session Management: if the `Use Zope session data manager` option in the plugin configuration is enabled,
|
|
271
|
-
the plugin will use the
|
|
272
|
-
to save the session data in a memcached based storage. Otherwise Zope will try to use ZODB
|
|
282
|
+
the plugin will use the session configuration configured in Zope. To do so we advise using [Products.mcdutils](https://pypi.org/project/Products.mcdutils/)
|
|
283
|
+
to save the session data in a memcached based storage. Otherwise, Zope will try to use a ZODB-based session
|
|
273
284
|
which has shown several problems in the past.
|
|
274
285
|
|
|
275
286
|
- Use the cookie-based session management: if the `Use Zope session data manager` option in the plugin
|
|
@@ -399,6 +410,44 @@ The project is licensed under the GPLv2.
|
|
|
399
410
|
|
|
400
411
|
<!-- towncrier release notes start -->
|
|
401
412
|
|
|
413
|
+
## 2.0.0b2 (2024-12-09)
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
### New features:
|
|
417
|
+
|
|
418
|
+
- Update the Deutsch translation [macagua] [#60](https://github.com/collective/pas.plugins.oidc/issues/60)
|
|
419
|
+
- Implement control panel to configure pas.plugins.oidc [@ericof] [#65](https://github.com/collective/pas.plugins.oidc/issues/65)
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
### Documentation:
|
|
423
|
+
|
|
424
|
+
- Fixed port numbers on README file [macagua] [#51](https://github.com/collective/pas.plugins.oidc/issues/51)
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
## 2.0.0b1 (2024-06-25)
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
### New features:
|
|
431
|
+
|
|
432
|
+
- Added Deutsch translation
|
|
433
|
+
[@macagua] [#45](https://github.com/collective/pas.plugins.oidc/issues/45)
|
|
434
|
+
- Allow multiple instances of OIDC plugin in a given Plone site @erral [#48](https://github.com/collective/pas.plugins.oidc/issues/48)
|
|
435
|
+
- Notify user events on creation and authentication. [@Arkusm][@ericof] [#53](https://github.com/collective/pas.plugins.oidc/issues/53)
|
|
436
|
+
- Updated the latest .po templates for translate
|
|
437
|
+
Updated Spanish translation
|
|
438
|
+
[@macagua] [#55](https://github.com/collective/pas.plugins.oidc/issues/55)
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
### Internal:
|
|
442
|
+
|
|
443
|
+
- Update configuration files @plone
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
### Documentation:
|
|
447
|
+
|
|
448
|
+
- Recommend using `[pas.plugins.keycloakgroups](https://pypi.org/project/pas.plugins.keycloakgroups/)` for groups support with Keycloak [@ericof] [#42](https://github.com/collective/pas.plugins.oidc/issues/42)
|
|
449
|
+
|
|
450
|
+
|
|
402
451
|
## 2.0.0a1 (2023-11-23)
|
|
403
452
|
|
|
404
453
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div align="center"><img alt="logo" src="
|
|
1
|
+
<div align="center"><img alt="pas.plugins.oidc logo" src="https://raw.githubusercontent.com/collective/pas.plugins.oidc/main/docs/icon.png" width="70" /></div>
|
|
2
2
|
|
|
3
3
|
<h1 align="center">pas.plugins.oidc</h1>
|
|
4
4
|
|
|
@@ -30,10 +30,13 @@ OAuth 2.0 should work as well because OpenID Connect is built on top of this pro
|
|
|
30
30
|
- PAS plugin, although currently no interfaces are activated.
|
|
31
31
|
- Three browser views for this PAS plugin, which are the main interaction with the outside world.
|
|
32
32
|
|
|
33
|
+
### Group Enumeration
|
|
34
|
+
|
|
35
|
+
If you need to support group enumeration from a Keycloak server, we recommend installing the package [pas.plugins.keycloakgroups](https://pypi.org/project/pas.plugins.keycloakgroups/).
|
|
33
36
|
|
|
34
37
|
## Installation
|
|
35
38
|
|
|
36
|
-
This package supports Plone sites using Volto and
|
|
39
|
+
This package supports Plone sites using Volto and Classic UI.
|
|
37
40
|
|
|
38
41
|
For proper Volto support, the requirements are:
|
|
39
42
|
|
|
@@ -81,7 +84,7 @@ When using this plugin with a [Volto frontend](https://6.docs.plone.org/volto/in
|
|
|
81
84
|
* **Login URL**: `<Path to your Plone site>`/login
|
|
82
85
|
* **Logout URL**: `<Path to your Plone site>`/logout
|
|
83
86
|
|
|
84
|
-
Also, on the OpenID provider, configure the Redirect URL as **`<Path to your Plone site>`/
|
|
87
|
+
Also, on the OpenID provider, configure the Redirect URL as **`<Path to your Plone site>`/login-oidc/oidc**.
|
|
85
88
|
|
|
86
89
|
|
|
87
90
|
#### Classic UI
|
|
@@ -161,9 +164,9 @@ So, for Keycloak, it does not matter if we use the default or legacy mode if the
|
|
|
161
164
|
*Notes:*
|
|
162
165
|
|
|
163
166
|
* If legacy `redirect_uri` parameter is disabled in Keycloak, this is the default since version 18 of Keycloak according
|
|
164
|
-
to this comment in *
|
|
167
|
+
to this comment in *Stack Overflow*: https://stackoverflow.com/a/72142887.
|
|
165
168
|
* The plugin will work only if the `Use deprecated redirect_uri for logout url(/Plone/acl_users/oidc/logout)`
|
|
166
|
-
option is un-checked at the plugin properties at http://localhost:
|
|
169
|
+
option is un-checked at the plugin properties at http://localhost:8080/Plone/acl_users/oidc/manage_propertiesForm.
|
|
167
170
|
|
|
168
171
|
#### Additional Documentation
|
|
169
172
|
|
|
@@ -175,9 +178,9 @@ Specifically, here we will use a Docker image, so follow the instructions on how
|
|
|
175
178
|
* Make sure **pas.plugins.oidc** is installed.
|
|
176
179
|
* Start Plone and create a Plone site with id Plone.
|
|
177
180
|
* In the Add-ons control panel, install `pas.plugins.oidc`.
|
|
178
|
-
* In the ZMI go to the plugin properties at http://localhost:
|
|
181
|
+
* In the ZMI go to the plugin properties at http://localhost:8080/Plone/acl_users/oidc/manage_propertiesForm
|
|
179
182
|
* Set these properties:
|
|
180
|
-
* `OIDC/Oauth2 Issuer`: http://127.0.0.1:
|
|
183
|
+
* `OIDC/Oauth2 Issuer`: http://127.0.0.1:8180/realms/plone/
|
|
181
184
|
* `Client ID`: *plone* (**Warning:** This property must match the `Client ID` you have set in Keycloak.)
|
|
182
185
|
* `Client secret`: *12345678* (**Warning:** This property must match the `Client secret` you have get in Keycloak.)
|
|
183
186
|
* `Use deprecated redirect_uri for logout url` checked. Use this if you need to run old versions of Keycloak.
|
|
@@ -191,14 +194,14 @@ Specifically, here we will use a Docker image, so follow the instructions on how
|
|
|
191
194
|
|
|
192
195
|
See this screenshot:
|
|
193
196
|
|
|
194
|
-
|
|
197
|
+

|
|
195
198
|
|
|
196
199
|
#### Login
|
|
197
200
|
|
|
198
|
-
Go to the other browser, or logout as admin from [Keycloak Admin Console](http://
|
|
201
|
+
Go to the other browser, or logout as admin from [Keycloak Admin Console](http://127.0.0.1:8180/admin).
|
|
199
202
|
Currently, the Plone login form is unchanged.
|
|
200
203
|
|
|
201
|
-
Instead, for testing go to the login page of the plugin: http://localhost:
|
|
204
|
+
Instead, for testing go to the login page of the plugin: http://localhost:8080/Plone/acl_users/oidc/login,
|
|
202
205
|
this will take you to Keycloak to login, and then return. You should now be logged in to Plone, and see the
|
|
203
206
|
*full name* and *email*, if you have set this in Keycloak.
|
|
204
207
|
|
|
@@ -207,7 +210,7 @@ this will take you to Keycloak to login, and then return. You should now be logg
|
|
|
207
210
|
If the login did work as expected you can try to Plone logout.
|
|
208
211
|
Currently, the Plone logout form is unchanged.
|
|
209
212
|
|
|
210
|
-
Instead, for testing go to the logout page of the plugin: http://localhost:
|
|
213
|
+
Instead, for testing go to the logout page of the plugin: http://localhost:8080/Plone/acl_users/oidc/logout,
|
|
211
214
|
this will take you to Keycloak to logout, and then return to the post-logout redirect URL.
|
|
212
215
|
|
|
213
216
|
## Technical Decisions
|
|
@@ -220,8 +223,8 @@ and comes back from there.
|
|
|
220
223
|
The plugin has 2 ways of working with sessions:
|
|
221
224
|
|
|
222
225
|
- Use the Zope Session Management: if the `Use Zope session data manager` option in the plugin configuration is enabled,
|
|
223
|
-
the plugin will use the
|
|
224
|
-
to save the session data in a memcached based storage. Otherwise Zope will try to use ZODB
|
|
226
|
+
the plugin will use the session configuration configured in Zope. To do so we advise using [Products.mcdutils](https://pypi.org/project/Products.mcdutils/)
|
|
227
|
+
to save the session data in a memcached based storage. Otherwise, Zope will try to use a ZODB-based session
|
|
225
228
|
which has shown several problems in the past.
|
|
226
229
|
|
|
227
230
|
- Use the cookie-based session management: if the `Use Zope session data manager` option in the plugin
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Generated from:
|
|
2
|
-
# https://github.com/plone/meta/tree/
|
|
2
|
+
# https://github.com/plone/meta/tree/main/config/default
|
|
3
3
|
# See the inline comments on how to expand/tweak this configuration file
|
|
4
4
|
[build-system]
|
|
5
5
|
requires = ["setuptools>=68.2"]
|
|
@@ -122,7 +122,7 @@ Zope = [
|
|
|
122
122
|
'Products.CMFCore', 'Products.CMFDynamicViewFTI',
|
|
123
123
|
]
|
|
124
124
|
python-dateutil = ['dateutil']
|
|
125
|
-
ignore-packages = ['plone.restapi', 'plone.volto', 'zestreleaser.towncrier', 'zest.releaser', 'pytest', 'pytest-cov', 'pytest-plone', 'pytest-docker', 'pytest-vcr', 'pytest-mock', '
|
|
125
|
+
ignore-packages = ['plone.restapi', 'plone.volto', 'zestreleaser.towncrier', 'zest.releaser', 'pytest', 'pytest-cov', 'pytest-plone', 'pytest-docker', 'pytest-vcr', 'pytest-mock', 'zope.pytestlayer', 'requests-mock', 'vcrpy']
|
|
126
126
|
Plone = ['Products.CMFPlone', 'Products.CMFCore', 'Products.GenericSetup', 'Products.PluggableAuthService', 'Products.PlonePAS']
|
|
127
127
|
|
|
128
128
|
##
|
|
@@ -138,16 +138,18 @@ Plone = ['Products.CMFPlone', 'Products.CMFCore', 'Products.GenericSetup', 'Prod
|
|
|
138
138
|
[tool.check-manifest]
|
|
139
139
|
ignore = [
|
|
140
140
|
".editorconfig",
|
|
141
|
+
".flake8",
|
|
141
142
|
".meta.toml",
|
|
142
143
|
".pre-commit-config.yaml",
|
|
143
|
-
"
|
|
144
|
-
".flake8",
|
|
144
|
+
"dependabot.yml",
|
|
145
145
|
"mx.ini",
|
|
146
|
+
"tox.ini",
|
|
146
147
|
"news/*",
|
|
147
148
|
"constraints-mxdev.txt",
|
|
148
149
|
"requirements-mxdev.txt",
|
|
149
150
|
|
|
150
151
|
]
|
|
152
|
+
|
|
151
153
|
##
|
|
152
154
|
# Add extra configuration options in .meta.toml:
|
|
153
155
|
# [pyproject]
|
|
@@ -155,6 +157,11 @@ ignore = [
|
|
|
155
157
|
# "*.map.js",
|
|
156
158
|
# "*.pyc",
|
|
157
159
|
# """
|
|
160
|
+
# check_manifest_extra_lines = """
|
|
161
|
+
# ignore-bad-ideas = [
|
|
162
|
+
# "some/test/file/PKG-INFO",
|
|
163
|
+
# ]
|
|
164
|
+
# """
|
|
158
165
|
##
|
|
159
166
|
|
|
160
167
|
[tool.coverage.run]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Installer for the pas.plugins.oidc package."""
|
|
2
|
+
|
|
2
3
|
from pathlib import Path
|
|
3
4
|
from setuptools import find_packages
|
|
4
5
|
from setuptools import setup
|
|
@@ -13,13 +14,13 @@ long_description = f"""
|
|
|
13
14
|
|
|
14
15
|
setup(
|
|
15
16
|
name="pas.plugins.oidc",
|
|
16
|
-
version="2.0.
|
|
17
|
-
description="
|
|
17
|
+
version="2.0.0b2",
|
|
18
|
+
description="OIDC support for Plone sites",
|
|
18
19
|
long_description=long_description,
|
|
19
20
|
long_description_content_type="text/markdown",
|
|
20
21
|
# Get more from https://pypi.org/classifiers/
|
|
21
22
|
classifiers=[
|
|
22
|
-
"Development Status ::
|
|
23
|
+
"Development Status :: 4 - Beta",
|
|
23
24
|
"Environment :: Web Environment",
|
|
24
25
|
"Framework :: Plone",
|
|
25
26
|
"Framework :: Plone :: Addon",
|
|
@@ -32,7 +33,7 @@ setup(
|
|
|
32
33
|
"Operating System :: OS Independent",
|
|
33
34
|
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
|
|
34
35
|
],
|
|
35
|
-
keywords="Python Plone CMS",
|
|
36
|
+
keywords="Python Plone CMS PAS Authentication OAuth OIDC",
|
|
36
37
|
author="mamico",
|
|
37
38
|
author_email="mauro.amico@gmail.com",
|
|
38
39
|
url="https://github.com/collective/pas.plugins.oidc",
|
|
@@ -52,15 +53,23 @@ setup(
|
|
|
52
53
|
install_requires=[
|
|
53
54
|
"setuptools",
|
|
54
55
|
"Plone",
|
|
56
|
+
"Zope",
|
|
57
|
+
"Products.CMFCore",
|
|
55
58
|
"plone.api",
|
|
59
|
+
"plone.app.registry",
|
|
60
|
+
"plone.base",
|
|
61
|
+
"plone.protect",
|
|
56
62
|
"plone.restapi>=8.34.0",
|
|
57
63
|
"oic",
|
|
64
|
+
"z3c.form",
|
|
58
65
|
],
|
|
59
66
|
extras_require={
|
|
60
67
|
"test": [
|
|
61
|
-
"
|
|
68
|
+
"zope.pytestlayer",
|
|
69
|
+
"plone.app.contenttypes",
|
|
62
70
|
"plone.app.testing",
|
|
63
71
|
"plone.restapi[test]",
|
|
72
|
+
"plone.testing",
|
|
64
73
|
"pytest-cov",
|
|
65
74
|
"pytest-plone>=0.2.0",
|
|
66
75
|
"pytest-docker",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Init and utils."""
|
|
2
|
+
|
|
2
3
|
from AccessControl.Permissions import manage_users as ManageUsers
|
|
3
4
|
from Products.PluggableAuthService import PluggableAuthService as PAS
|
|
4
5
|
from zope.i18nmessageid import MessageFactory
|
|
@@ -23,5 +24,6 @@ def initialize(context): # pragma: no cover
|
|
|
23
24
|
context.registerClass(
|
|
24
25
|
plugins.OIDCPlugin,
|
|
25
26
|
permission=ManageUsers,
|
|
26
|
-
constructors=(plugins.
|
|
27
|
+
constructors=(plugins.manage_addOIDCPluginForm, plugins.addOIDCPlugin),
|
|
28
|
+
visibility=None,
|
|
27
29
|
)
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
<i18n:registerTranslations directory="locales" />
|
|
21
21
|
|
|
22
22
|
<include package=".browser" />
|
|
23
|
+
<include package=".controlpanel" />
|
|
23
24
|
<include package=".services" />
|
|
24
25
|
|
|
25
26
|
<genericsetup:registerProfile
|
|
@@ -40,13 +41,7 @@
|
|
|
40
41
|
post_handler=".setuphandlers.uninstall"
|
|
41
42
|
/>
|
|
42
43
|
|
|
43
|
-
<
|
|
44
|
-
title="Activate challenge plugin"
|
|
45
|
-
profile="pas.plugins.oidc:default"
|
|
46
|
-
source="1000"
|
|
47
|
-
destination="1001"
|
|
48
|
-
handler=".setuphandlers.activate_challenge_plugin"
|
|
49
|
-
/>
|
|
44
|
+
<include package=".upgrades" />
|
|
50
45
|
|
|
51
46
|
<utility
|
|
52
47
|
factory=".setuphandlers.HiddenProfiles"
|