Authentication with OpenID Connect (OIDC)
This section describes how to configure an EDG server to use OpenID Connect (OIDC) authentication. EDG supports authentication with OIDC using OAuth 2.0 Authorization Code flow.
With SSO, users attempting to log in to EDG are forwarded to an enterprise Authorization Server. The Authorization Server is responsible for verifying the user’s identity, usually by asking the user to log in with a username and password. Some Authorization Servers support two-factor authentication. On success, the Authorization Server informs EDG of the user’s identity, and redirects them back to EDG. The Authorization Server may provide EDG with additional information such as the user’s roles, email address and full (display) name.
Considerations
Implementing SSO is highly recommended, and preferred over alternatives where user accounts are managed in EDG.
Aside from OIDC, EDG also supports SSO with Security Assertion Markup Lanuage (SAML). While SAML is a mature standard, OpenID Connect is sometimes considered a more modern and lighweight alternative that provides at least equal levels of security.
API clients cannot use OIDC SSO. Likewise, EDG cannot use OIDC SSO when sending projects to another EDG instance or publishing to Explorer. Therefore, an additional API authentication method such as HTTP Basic Authentication or Authentication with OAuth 2.0 should be configured.
Prerequisites
The Tomcat instance running EDG must use HTTPS
The ID token issued by the Authorization server must provide an attribute to be used as the user’s unique identifier
The ID token issued by the Authorization server must provide an attribute to be used as the user’s role within EDG
The EDG administrator must obtain a client ID and client secret from the Authorization Server.
The
redirectUri
(see below) must be pre-registered on the Authorization Server.
Configuring
Note
When configuring this method of authentication, it is helpful to have a technical resource familiar with the OIDC Authorization Server to assist with the configuration. TopQuadrant is unable to assist with specific configuration options for each customer’s Authorization Server.
To enable OIDC authentication, add or uncomment in the setup file (edg-setup.properties
):
endUserAuthMethod = oidc
Also, create an oidc.yaml
file according to the following section.
The oidc.yaml file
By default, the system will look for a file oidc.yaml
in the same
directory as the setup file.
If desired, the name and location can be overridden in the setup file:
oidcConfigFile = ./my-idp-oidc.yaml
Syntax
The file uses YAML syntax. It consists of an OIDC configuration record of the following form:
configuration-name:
authorizationServer: https://your.authorization.server
clientId: auth-server-unique-client-id
clientSecret: auth-server-client-secret
redirectUri: https://your.edg.server/edg/login/oauth2/code/configuration-name
attributeMappings:
userNameAttribute: auth-server-loginname-attribute
email: auth-server-email-attribute
role: auth-server-group-attribute
name: auth-server-displayname-attribute
A record consits of these elements:
configuration-name
(required)A unique name of your choice for this OIDC configuration. This name must match the last path segment of the
redirectUri
(see below).authorizationServer
(required)The base URL for the Authorization Server. This is the part that precedes
/.well-known/openid-configuration
in the Authorization Server’s OpenID Provider Configuration. See below for examples.clientId
(required)A unique identifier that identifies the EDG registration to the Authorization Server. It is obtained from the Authorization Server.
clientSecret
(required)A password issued by the Authorization Server used to authenticate the registered client (EDG). To avoid storing the secret in plain text, you can use the syntax described in Reading values from files or environment variables to store it in an environment variable or a file on an encrypted volume. Example:
clientSecret: ${env:ENTRA_CLIENT_SECRET}
redirectUri
(required)The EDG URL to which the user should be forwarded after successful login. This is the URL where EDG is deployed, followed by
login/oauth2/code/
and the unique configuration name. Example:https://your.edg.server/edg/login/oauth2/code/configuration-name
This URL must be registered with the Authorization Server as one of the Redirection URI values for the client.
attributeMappings
(required)This maps the attributes returned by the Authorization Server in the ID token to attributes understood by EDG. The left-hand values are EDG attributes; the right-hand values are ID token attributes.
The following EDG attributes are supported:
userNameAttribute
(required)The ID token attribute containing the user’s unique username/login ID
roles
(required)The ID token attribute containing the user’s group(s), to be used as EDG security role(s). Only group/role names that match the securityRoles field in the setup file are used.
email
(optional)The ID token attribute containing the user’s email address, for notifications
name
(optional)The ID token attribute containing the user’s full display name, if different from the
userNameAttribute
attribute
Example oidc.yaml
file for Okta
EDG-Okta:
authorizationServer: https://your.okta.com/oauth2/default
clientId: xxxxxxxxxxxxxxxxxxxx
clientSecret: ${env:OKTA_CLIENT_SECRET}
redirectUri: https://your.edg.server/edg/login/oauth2/code/EDG-Okta
attributeMappings:
userNameAttribute: email
roles: groups
email: email
name: name
Example oidc.yaml
file for Microsoft Entra
EDG-Entra:
authorizationServer: https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0
clientId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
clientSecret: ${file:/Volumes/encrypted/EntraClientSecret.txt}
redirectUri: https://your.edg.server/edg/login/oauth2/code/EDG-Entra
attributeMappings:
userNameAttribute: email
roles: groups
email: email
name: name
Example oidc.yaml
file for Google
EDG-Google:
authorizationServer: https://accounts.google.com
clientId: xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
clientSecret: ${env:GOOGLE_CLIENT_SECRET}
redirectUri: https://your.edg.server/edg/login/oauth2/code/EDG-Google
attributeMappings:
userNameAttribute: email
roles: groups
email: email
name: name
User management
With SSO, users are managed in the enterprise Authorization Server application.
User accounts that exist in the Authorization Server but who have never logged in to EDG will not be known to EDG. They cannot be assigned permissions and will not receive notifications until they have accessed EDG for the first time.
API client authentication
API client authentication with this authentication method is not possible. See Considerations above.