Portainer#
Let Portainer sign its users in with accounts from your Plone site, using its custom OAuth provider.
Note
Verified on 2026-09-24.
The examples use https://id.example.org as the issuer and
https://portainer.example.org as Portainer.
1. Register the client#
Follow Register an OAuth client with:
Field |
Value |
|---|---|
Redirect URI |
|
Grant |
Authorization code |
Scope |
|
Secret |
Yes. Portainer is a confidential client |
Capture the client secret from the response. It is shown once.
2. Configure Portainer#
Portainer does not read a discovery document, so every endpoint is typed in.
Open , choose OAuth, then the Custom provider, and fill in:
Field |
Value |
|---|---|
Client ID |
The client ID from step 1 |
Client secret |
The client secret from step 1 |
Authorization URL |
|
Access token URL |
|
Resource URL |
|
Redirect URL |
|
Logout URL |
|
User identifier |
|
Scopes |
|
Auth Style |
In Header |
Save the settings.
Verify#
Sign out of Portainer. Its login page offers Login with OAuth.
Choosing it takes you to your Plone site, which asks you to approve Portainer once.
You come back to Portainer signed in, as the user named by the claim in User identifier.
Known quirks#
User identifier:
preferred_usernameis the Plone login name, which Portainer shows as the user name.sub, the Plone user id, never changes and is the safer choice if login names might.Logout ends the Plone session only. This server has no OpenID Connect logout endpoint, so the Logout URL above signs the user out of your Plone site and does nothing else.
Teams: the
profilescope also releases agroupsclaim, which Portainer's automatic team membership can read.