Documentation

Using OpenID Connect

OpenID Connect is a lightweight authentication layer that enables users to authenticate using accounts they have on other systems. It’s built on top of the OAuth 2.0 authorization protocol. By using OpenID Connect, you delegate user authentication to other providers, making it easy for users with existing accounts to authenticate to your Liferay installation.

Note

You can add multiple providers to your installation, but Liferay DXP can’t be an OpenID Connect provider.

OpenID Connect’s token flow is similar to OAuth 2.0, because it’s built on top of its functionality. OAuth 2.0 is only an authorization protocol, so it sends an access token that grants access to particular APIs. OpenID Connect adds to this an identity token that passes user information like name and email, provided the user has authenticated and granted permission.

Creating a Client in OpenID Connect Provider

To use OpenID Connect, you must first register it as a client in your provider. This is an OAuth 2.0 client. The process varies by provider:

  1. Navigate to the provider’s website and create a client.

  2. During the creation process, you must supply an authorized redirect URL that can process the tokens sent from the provider. Liferay DXP’s URL is

    https://[server.domain]/c/portal/login/openidconnect
    
  3. The provider sends several pieces of information. Some of these, like the Discovery Endpoint, Authorization Endpoint, or Issuer URL are the same regardless of the client. The two pieces of information unique to your request are the client_id and the client_secret.

Collect the information from the provider. You’ll need it create the provider connection.

Configuring an OpenID Connect Provider Connection

Liferay seeks feedback on a new interface for a provider connection. For this reason, there are two ways to create the connection: the standard way and the new way.

New OpenID Connect Provider Connection for OAuth 2.0

This interface is for those who want granular control over their client connection. All configuration is done through the provider’s Well-Known Configuration Endpoint, as defined in the OpenID Connect configuration specification.

  1. Go to the Global Menu → Security → OAuth Client Administration.

  2. There are two tabs. The first is for authorization servers that have a Well Known URI. The second is for authorization servers without a Well Known URI. Choose the appropriate tab and click Add (Add Button).

  3. If you have the authorization server’s Well Known URI, paste it into the Well Known URI field. For example, Google’s is https://accounts.google.com/.well-known/openid-configuration.

  4. Most of the time, this is all you need to do. If you don’t have a Well Known URI, use the fields below to configure the connection. When finished, click Save.

The other fields on the form are for specific configuration generated with the provider.

OAuth Client Information: Add client configuration information according to the RFC-7591 JSON format. Note that you may not need to add anything here if you used the Well Known URI.

OAuth Client Default Authorization Request Parameters: If you have Liferay applications that do not specify authorization request parameters themselves, specify the default parameters in JSON format for using this OAuth client here. Custom parameter values must be a JSON array of strings.

OAuth Client Default Token Request Parameters: If you have Liferay applications that do not specify token request parameters themselves, specify the default parameters in JSON format for using this OAuth client here. Custom parameter values must be a JSON array of strings.

Standard OpenID Connect Provider Connection

Go to Control PanelConfigurationInstance SettingsSecuritySSO and select OpenID Connect Provider under the System Scope.

Locating OpenID configurations in the System Settings menu.

Follow these steps:

  1. Add the provider by clicking the Add button.

  2. Use the information you received from the provider to fill out the form.

    Field

    Description

    Provider Name

    This name appears in the Sign-In Portlet when users use OpenID Connect to log in.

    OpenID Client ID

    Provide the OAuth 2.0 Client ID you received from your provider.

    OpenID Connect Client Secret

    Provide the OAuth 2.0 Client Secret you received from your provider.

    Scopes

    Leave the default, which requests the user name and the email. Your provider may offer other scopes of user information.

    Discovery Endpoint

    Other URLs may be obtained from this URL, and they vary by provider.

    Discovery Endpoint Cache in Milliseconds

    Cache the endpoints (URLs) discovered for this amount of time.

    Authorization Endpoint

    This URL points to the provider’s URL for authorizing the user (i.e., signing the user in).

    Issuer URL

    The provider’s URL that points to information about the provider who is issuing the user information.

    JWKS URI

    A URL that points to the provider’s JSON Web Key Set that contains the public keys that can verify the provider’s tokens.

    ID Token Signing Algorithms

    Set the supported ID token algorithms manually. Normally, this is “discovered” at the discovery endpoint. You can add as many of these as you need.

    Subject Types

    A Subject Identifier is a unique and never reassigned identifier the provider uses to establish who the user is, and is consumed by the client (i.e., Liferay DXP). There are two types: public (provides the same value to all clients) and private (provides a different value to each client).

    Token Endpoint

    The provider’s URL where tokens can be requested.

    Token Connection Timeout in Milliseconds

    Wait this long when requesting a token for validation before timing out. A value of 0 means wait forever and is not recommended.

    User Information Endpoint

    The OAuth 2.0 protected URL from which user information can be obtained.

Once you’ve filled out the form, click Save, and you’re ready to enable OpenID Connect authentication.

An exported configuration results in this System Settings configuration file:

com.liferay.portal.security.sso.openid.connect.internal.configuration.OpenIdConnectProviderConfiguration-[name].config

where [name] is a descriptive, but unique name for example provider1.

Enabling OpenID Connect Authentication

  1. Go to Control PanelConfigurationInstance SettingsSecuritySSO and select OpenID Connect under Virtual Instance Scope.

    Enabling OpenID Connect authentication in Instance Settings.

  2. Click the Enabled check box and then click Save.

An exported configuration results in this System Settings configuration file:

com.liferay.portal.security.sso.openid.connect.configuration.OpenIdConnectConfiguration.config

Now users can sign in with OpenID Connect.

Signing In With OpenID Connect

A new link appears in the Sign-In Portlet for signing in with OpenID Connect:

  1. From the Sign-In Portlet, click the OpenID Connect link at the bottom.

  2. Choose a provider and click Sign In.

  3. This takes you to your provider’s sign in page. Enter your credentials and log in.

  4. Upon successful authentication, you’re redirected back to Liferay DXP in an authenticated state.