OpenID Connect is a simple identity layer on top of the OAuth 2.0 protocol, which allows computing clients to verify the identity of an end-user based on the authentication performed by an authorization server, as well as to obtain basic profile information about the end-user in an interoperable and REST-like manner. In technical terms, OpenID Connect specifies a RESTful HTTP API, using JSON as a data format.
Examples how to use translate5 as OpenID client with different OpenID servers for Single-Sign-On (SSO) usage
- Google as OpenID server for translate5
- MS Azure ActiveDirectory as OpenID server for translate5
- MS ActiveDirectory Federation Services
Configuration within translate5
To configure translate5 to work with OpenId connect is very simple. Navigate to the clients tab in your translate5 instance, and under the OpenId connect fieldsub-set tab there are OpenId configuration fields that need to be set.
OpenId server: OpenId authentication server url. This is the URL translate5 redirects users for authentication at the OpenId connect server (Google configuration example:)
OpenId issuer: OpenId issuer url. In many cases this url is identical with the OPenId server url.
OpenId user name: OpenId authentication server username (Google configuration example: "Client ID" see image3)
(the user name that allows the openId client application to connect to the API of the openId server; do NOT mix this up with the username of the user, that wants to authenticate!)
System Roles: translate5 internal user system roles.
- If the OpenID connect server is configured and able to pass roles along with the authentication, the translate5 system roles passed by the OpenID server will be set for this user in translate5.
- If the roles
- in the OpenID server change, on the next login they will also change in translate5.
- The OpenID server will only be able to set roles, that are checked in the OpenID Connect configuration of the corresponding client in translate5. Other roles will be ignored by translate5, even if the OpenID server claims them.
- If the OpenID Connect server is not able to or configured to claim roles, the roles checked in the OpenID Connect configuration of the corresponding client in translate5 will always automatically be set for users of this client.
Link text on login page: Label text on the login page of translate5. A click on it redirects the user to the configured openid server for authentication, instead of using translate5 for authentication. If the checbox "Do not show login page" below the field "Link text on login page" is checked, the user will directly be redirected to the openid server for authentication/authorization and will never see the translate5 login page.
Checkbox "Do not show login page: Automatically redirect to OpenID Connect server": Redirect directly to the SSO authentication provider.
Creation of a user through OpenId Connect / Matching with an existing user
If a user authenticates, the following steps are done:
- Translate5 tries to find an existing translate5 user by issuing authority and openid identity/subject of the user claims. If for those values, there is an existing user in transalte5, this translate5 user will be used and updated with potential new rights and user attributes (like name, e-mail, etc.)
- If in the above case there is no matching user found in transalte5, translate5 tries to find a valid e-mail address in the information, the OpenId Connect IPD provides about the connecting user:
- First it looks in the email field requested of the userinfo_endpoint (if configured)
- If not found there, translate5 tries to find it in the 'upn' claim.
- If not found there, translate5 tries to find it in the preferred_username claim
- If it is not found there, translate5 will throw an exception
- If a user exists, that has the e-mail address as login name as the one coming from OpenId Connect IDP, but with different OpenId specific issues and sub values, we will create new user with "OID-" as login prefix but with same email address.
- If a user exists, that has the e-mail address as login name as the one coming from OpenId Connect IDP, but with no OpenId specific issues and sub values (so a manually created one), translate5 updates this user with the info coming from the OpenId Connect IDP.