OpenID Connect
==============
OpenID is an easy and safe way for people to reuse an existing account and user
profile from an OpenID provider. Connect your OpenID provider (OP) as a
single sign-on (SSO) method.
The relying party (RP) is Zammad and the OpenID provider is a software service
that you either host or subscribe to
(e.g. `Keycloak `_).
.. hint::
- This guide assumes you are already using OpenID Connect within your
organization (i.e. that your OP is fully set up).
- The current implementation of OpenID Connect in Zammad requires
OpenID Connect Discovery to simplify the configuration.
- The connection between Zammad and your OP has to be secure. Both
systems must be reachable via HTTPS. Self-signed certificates are not
supported.
- Our instructions are based on connecting Zammad with Keycloak.
- PKCE is currently only supporting SHA256 as code challenge method.
Step 1: Configure Your OP
--------------------------
Add a new Client
^^^^^^^^^^^^^^^^
Create a new client in your OP with the following settings:
General settings
* Client type: OpenID Connect
* Client ID: ``zammad`` (or any other name you prefer)
Capability config
* Client authentication: Off
* Authentication flow: Standard flow
Login settings
* Valid redirect URIs: ``https://your.zammad.domain/auth/openid_connect/callback``
* Valid post logout redirect URIs: ``https://your.zammad.domain/*``
* Web origins: ``+``
In the **Logout settings** for the newly created client, set the
**Backchannel logout URL** to
``https://your.zammad.domain/auth/openid_connect/backchannel_logout`` and
switch on **Backchannel logout session required**.
If you would like to use `PKCE `_, you need to switch
to the **Advanced** tab and select **S256** in **Advanced settings** as the code
challenge method for PKCE.
Step 2: Configure Zammad
------------------------
Enable OpenID Connect and enter your OP's details in the Admin Panel under
**Settings > Security > Third Party Applications > Authentication via OpenID
Connect**:
.. image:: /images/settings/security/third-party/openid-connect/zammad_connect_oidc_thirdparty_general.png
:alt: Example configuration of OpenID Connect
:scale: 80%
:align: center
Display name
Allows you to define a custom button name for OpenID Connect. This helps your
users to understand better what the button on the login page does.
Defaults to ``OpenID Connect``.
Identifier
The client ID you defined in your OP.
Issuer
The issuer URL of your OP. Used for discovery.
UID field
Here you can define an attribute that uniquely identifies the user. If unset,
``sub`` is used.
Scopes
The scopes that Zammad should request from the OP. Defaults to ``openid``,
``email`` and ``profile``.
PKCE
Currently only SHA256 as code challenge method is supported.
See :ref:`automatic account linking ` for details on
how to link existing Zammad accounts to OP accounts.