Appearance
CP Overview
On the CP page you can modify a couple of things.
Default settings
Logging settings
| Name | Description |
|---|---|
| Logging | What should be logged. Options: only errors, Everything, Nothing |
SSO settings
| Name | Description |
|---|---|
| Membergroup | Assign new SSO users to a member group |
| Allow new SSO accounts | Allow login with a new email. For this new email the SSO module will create a new EE account |
| Allow social login to merge with non social accounts | Allow users to log in to existing ExpressionEngine email accounts that were created by EE itself, not by the SSO module. This way, a user can have an existing account and by logging in via the SSO module, they can access that existing account |
| Require a verified email to link an existing account | Only merge a social login into an existing account when the provider verified the email address. Google, Apple, Facebook, GitHub, LinkedIn, Discord, X, PayPal, Yahoo, Twitch, Slack, GitLab, Keycloak and Okta report this (OpenID Connect when the provider sends email_verified), Microsoft and Amazon do not. Turning this off lets anyone who can set an unverified email at a provider log in to the account with that email. Default: yes. Available from v6.0.0 |
| Send new password per mail | Send the newly created password to the user only if the EE account was created. Existing accounts will not receive a new password |
| Send password when user disconnect | When enabled, a password is sent to the user when they disconnect their account |
| Remember me | Keep members logged in (1 year) after a social login, like the "remember me" checkbox of the login form. Default: yes. Available from v6.0.0 |
| Sync profile picture | Sync the profile picture on every login, so it gets updated on every login. Needs an upload directory named Avatars |
| Email collect form | When the email is not given from the social site, you can use a template to collect the email. In the template you need at least this template code: |
html
{exp:reinos_sso:email_collect_form}
<input type="email" name="email"/>
<input type="submit"/>
{/exp:reinos_sso:email_collect_form}Select the template to use as the email collect form via the template dropdown.
Logs
The log page shows what the module logged, see the Logging setting. Available from v6.0.0:
- Filter the logs on severity (error or notice), date and keyword, and choose the number of logs per page.
- Select logs and delete them with the bulk action.
- Export the filtered logs as CSV with Export logs.
Delete all logs deletes the logs of the current site.
Linked accounts
The linked accounts page lists which members are connected to which provider: the member, their email, the provider and the ID of the account at the provider. Available from v6.0.0:
- Filter on a provider.
- Search on the username, screen name or email of the member, or the provider ID.
- Choose the number of accounts per page.
Member settings
| Name | Description |
|---|---|
| Disable member registration | In order to use only SSO as registration/login option, you can disable the default EE member registration in the member settings |
Provider settings
The providers page shows all providers per group (social and consumer, business and identity, developers and communities, legacy) with their status:
| Status | Description |
|---|---|
| Enabled | The provider is enabled and all its settings are filled in |
| Missing settings | The provider is enabled, but a required setting is empty. A login with it fails, the page shows a warning |
| Off | The provider is disabled |
Filter the providers on status, search on the name, or enable and disable several providers at once with the checkboxes. Click a provider to edit its settings; the edit page shows the callback URL to register at the provider. A setting from $config['reinos_sso_providers'] in config.php counts as filled in. The settings are per site. Available from v6.0.0
Google
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Your API ID |
| Secret | Your API Secret |
To get the API keys follow the following steps:
- Go to https://code.google.com/apis/console/ and create a new project.
- Go to API Access under API Project. After that click on Create an OAuth 2.0 client ID to create a new application.
- A pop-up named "Create Client ID" will appear, fill out any required fields such as the application name and description.
- Click on Next.
- On the popup set Application type to Web application and switch to advanced settings by clicking on (more options).
- Provide this URL as the Callback URL for your application: Callback url showed on the overview page
Facebook
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Your API ID |
| Secret | Your API Secret |
To get the API keys follow the following steps:
- Go to https://developers.facebook.com/apps and create a new application by clicking "Create New App".
- Fill out any required fields such as the application name and description.
- Put your website domain in the Site Url field.
Twitter
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Your API ID |
| Secret | Your API Secret |
To get the API keys follow the following steps:
- Go to https://dev.twitter.com/apps and create a new application.
- Fill out any required fields such as the application name and description.
- Put your website domain in the Website field.
- Provide this URL as the Callback URL for your application: Callback url showed on the overview page
LinkedIn
This is the legacy "Sign In with LinkedIn" provider, LinkedIn no longer offers it to new apps. Use LinkedIn (OpenID Connect) for new apps.
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Your API ID |
| Secret | Your API Secret |
To get the API keys follow the following steps:
- Go to https://www.linkedin.com/secure/developer (or https://www.linkedin.com/secure/developer?newapp=) and create a new application.
- Fill out any required fields such as the application name and description.
- Copy the Callback URL from the SSO control panel into the OAuto 2.0 Authorized Redirect URL field.
LinkedIn (OpenID Connect)
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Your Client ID |
| Secret | Your Client Secret |
To get the API keys follow the following steps:
- Go to https://www.linkedin.com/developers/apps and create a new app.
- Add the product "Sign In with LinkedIn using OpenID Connect".
- Copy the Callback URL from the SSO control panel into the Authorized redirect URLs on the Auth tab.
Microsoft
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Application (client) ID |
| Secret | Client secret value |
| Tenant | Who can log in: common (personal and work/school accounts, default), organizations (work/school accounts), consumers (personal accounts), or the ID or domain of your tenant |
To get the API keys follow the following steps:
- Go to the Azure portal → Microsoft Entra ID → App registrations and create a new registration.
- Choose the supported account types, this must match the Tenant setting.
- Add a Web redirect URI with the Callback URL from the SSO control panel.
- Create a client secret under Certificates & secrets.
Microsoft does not report if an email address is verified, so with Require a verified email to link an existing account a Microsoft login is not merged into an existing account by email. Members can connect Microsoft from their profile with the linked_providers tag.
GitHub
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client secret |
To get the API keys follow the following steps:
- Go to https://github.com/settings/developers and create a new OAuth App.
- Use the Callback URL from the SSO control panel as Authorization callback URL.
Discord
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client Secret |
To get the API keys follow the following steps:
- Go to https://discord.com/developers/applications and create a new application.
- Add the Callback URL from the SSO control panel as redirect under OAuth2.
X
Available from v6.0.0
The OAuth 2.0 successor of the Twitter provider.
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | OAuth 2.0 Client ID |
| Secret | OAuth 2.0 Client Secret |
To get the API keys follow the following steps:
- Go to https://developer.x.com and create a project and app.
- Set up User authentication with OAuth 2.0, type Web App, and request the email address of the user.
- Use the Callback URL from the SSO control panel as Callback URI.
Apple
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Identifier ID of the Services ID |
| Team ID | Team ID, can be found in the top-right of your screen |
| Key ID | The ID of your key |
| Key Content | The actual content of your (private) key |
To get the API keys follow the following steps:
- Sign in to https://developer.apple.com/account/resources
- Create a new Identifier of type
APP IDsand enable "Sign In with Apple". - Create an other Identifier of type
Serivces IDsand enable "Sign In with Apple". Configure it so it will use thePrimary App IDcreated in step 2. Also, add your domain and redirect/callback URL e.g.https://your-domain/sso_route_callback/auth/AppleThis is your Identifier ID. - Create a new Key with "Sign in with Apple" checked and your identifier attached via the config button. Download the key and safe it somewhere safe.
Amazon
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client Secret |
To get the API keys follow the following steps:
- Go to the Login with Amazon console and create a security profile.
- Under Web Settings, add your site as Allowed Origin and the Callback URL from the SSO control panel as Allowed Return URL.
Amazon does not report if an email address is verified, see Require a verified email to link an existing account.
PayPal
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Secret |
To get the API keys follow the following steps:
- Go to https://developer.paypal.com/dashboard/applications/live and create an app (Live, the sandbox is not supported).
- Enable Log in with PayPal under the features of the app, request the email address and add the Callback URL from the SSO control panel as Return URL.
Yahoo
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID (Consumer Key) |
| Secret | Client Secret (Consumer Secret) |
To get the API keys follow the following steps:
- Go to https://developer.yahoo.com/apps/ and create an app.
- Use the Callback URL from the SSO control panel as Redirect URI and select the OpenID Connect permissions Email and Profile.
Twitch
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client Secret |
To get the API keys follow the following steps:
- Go to https://dev.twitch.tv/console/apps and register an application, category Website Integration.
- Add the Callback URL from the SSO control panel as OAuth Redirect URL.
Slack
Available from v6.0.0
Uses Sign in with Slack (OpenID Connect).
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client Secret |
To get the API keys follow the following steps:
- Go to https://api.slack.com/apps and create a new app.
- Under OAuth & Permissions, add the Callback URL from the SSO control panel as Redirect URL and add the User Token Scopes
openid,profileandemail. - Copy the Client ID and Client Secret from Basic Information.
GitLab
Available from v6.0.0
Works with gitlab.com and with a self-managed GitLab (OpenID Connect).
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Application ID |
| Secret | Secret |
| URL | The URL of a self-managed GitLab, e.g. https://gitlab.example.com. Empty = gitlab.com |
To get the API keys follow the following steps:
- In GitLab go to your avatar → Edit profile → Applications (or Admin → Applications for an instance-wide app) and add a new application.
- Use the Callback URL from the SSO control panel as Redirect URI, keep Confidential on and select the scopes
openid,profileandemail.
Keycloak
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client secret |
| URL | The URL of the Keycloak server, e.g. https://login.example.com (without /realms/...) |
| Realm | The name of the realm the client is in |
To get the API keys follow the following steps:
- In the Keycloak admin console, select the realm and create a client of type OpenID Connect.
- Turn on Client authentication and the Standard flow.
- Add the Callback URL from the SSO control panel as Valid redirect URI.
- Copy the client secret from the Credentials tab.
Okta
Available from v6.0.0
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| ID | Client ID |
| Secret | Client secret |
| Domain | Your Okta domain without https://, e.g. example.okta.com |
| Authorization server | The ID of a custom authorization server, e.g. default. Empty = the org authorization server |
To get the API keys follow the following steps:
- In the Okta admin console go to Applications → Create App Integration, choose OIDC - OpenID Connect and Web Application.
- Add the Callback URL from the SSO control panel as Sign-in redirect URI.
- Assign the users or groups that may log in.
OpenID Connect
Available from v6.0.0
Log in with any provider that supports OpenID Connect, for example Auth0, Authentik, Zitadel or your own identity server. The endpoints are read from the discovery document {issuer}/.well-known/openid-configuration, PKCE is used when the provider supports it.
| Name | Description |
|---|---|
| Enabled | Is the provider enabled or not |
| Title | The name of the provider in the login links, e.g. "Company login" |
| ID | Client ID |
| Secret | Client secret |
| Issuer | The issuer URL of the provider, e.g. https://example.eu.auth0.com. Must start with https:// |
To get the API keys follow the following steps:
- Create a web application (confidential client, authorization code flow) at your provider.
- Add the Callback URL from the SSO control panel as redirect URI and allow the scopes
openid,profileandemail. - Copy the client ID, the client secret and the issuer URL.
The email address is only treated as verified when the provider sends the email_verified claim. For Microsoft Entra ID use the Microsoft provider, its issuer differs per tenant.
Credentials in config.php
Available from v6.0.0
Instead of the CP, you can set the provider settings in your config.php, for example from environment variables. This keeps the secrets out of the database. The values in config.php win over the CP settings, the provider still has to be enabled in the CP.
php
$config['reinos_sso_providers'] = [
'Google' => [
'keys' => ['id' => getenv('SSO_GOOGLE_ID'), 'secret' => getenv('SSO_GOOGLE_SECRET')],
],
'MicrosoftGraph' => [
'keys' => ['id' => getenv('SSO_MS_ID'), 'secret' => getenv('SSO_MS_SECRET')],
'tenant' => 'organizations',
],
];The provider names are Google, Facebook, Twitter, X, Apple, LinkedIn, LinkedInOpenID, MicrosoftGraph, GitHub, Discord, Instagram, Amazon, Paypal, Yahoo, TwitchTV, Slack, GitLab, Keycloak, OktaOIDC and OpenIDConnect.
Resources
- https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple
- https://developer.apple.com/sign-in-with-apple/get-started
- https://sarunw.com/posts/sign-in-with-apple-2
Email template
To customise the email template, you can alter the template in the Template Manager -> System Templates -> Email and look for SSO.
