...
This page describes the Abiquo integration with OpenID Connect available in Abiquo.
This integration allows Abiquo to leverage single sign on authentication and federated authorization features.
The integration targets the core spec, but also implements some optional features such as the RP-Initiated-Logout from the optional Session Management spec.
Discovery, dynamic registration, and other optional features are out of the scope of this integration.
Excerpt | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A new Abiquo configuration property was introduced in Abiquo 5.1.2
Changes to the OpenID integration in Abiquo 4.6 Two new Abiquo configuration properties were introduced in
|
Basic workflow
Info |
---|
In the OpenID basic workflow, the user interacts with Abiquo (the Application), which is also a client of the OpenID Connect server (the Identity Server) |
The following diagram shows the basic authentication and authorization workflow when using the OpenID Connect integration.
...
Users will access the Abiquo portal, and will be redirected to the OpenID Connect server
Users will enter their credentials to log in to the OpenID Connect server (note that the credentials are never exposed to Abiquo).
It will display the consent screen that describes the permissions that Abiquo is requesting and the information it needs to access.Upon successful authentication and consent grant, the OpenID Connect server issues the following tokens and redirects the user back to the application:
ID token - A JWT token containing the information about the user.
Access token - An OAuth2 token that provides access to the application resources on behalf of the user.
Refresh token - An optional token that can be used to refresh the access token when it expires.
Abiquo will use the access token to request information about the logged user (permissions, etc) and will create the corresponding user in the Abiquo database.
Users will use the access token to access the Abiquo platform, including the Abiquo API
At any time, users with the refresh_token will be able to perform a call to the Abiquo API to refresh the access token.
If the global logout is configured, when users log out from the Abiquo platform they will be signed out from the OpenID Connect server.
...
This is an overview of the steps to configure the OpenID Connect Integration
Configure the cloud admin user with Abiquo in normal auth mode
Map OpenID users to Abiquo enterprises and roles with Abiquo in normal auth mode
Register Abiquo as a client application on the OpenID Connect server and obtain OpenID client credentials
Configure the OpenID Connect server in abiquo.properties
Register the Abiquo Outbound API as an OAuth application and configure abiquo.properties
Configure the OpenID Connect logout
Configure Abiquo UI properties
Start the Abiquo Server
Configure API and Outbound API clients to work with an access token
Configure the cloud admin user
...
To map OpenID roles to an Abiquo role:
Create, clone or edit an Abiquo role
In the External Roles field, enter the same list of external roles/permissions as the OpenID user's role claim
Remember that a user's external roles must map to one local role in their enterprise and/or one global role.
...
To map an OpenID enterprise to an Abiquo enterprise by enterprise property:
Create or edit an Abiquo enterprise
Create an enterprise property with the key configured in the abiquo.openid.enterprise-property in abiquo.properties.
For example, for "abiquo.openid.enterprise-property = domain", create an enterprise property called domain.Set the value of this property to the value of the enterprise claim for this tenant.
...
When the authorization server returns the enterprise claim, Abiquo will look for all enterprises with a "domain" property.
It will find the one with the value that matches the value returned by the OpenID Connect server.
In this example, when the OpenID Connect server returns the value "abiquo.com" in the enterprise claim, Abiquo will select this enterprise.
...
To configure OpenID Connect in abiquo.properties:
Configure OpenID Connect server details (endpoints, claims, etc.)
Configure OpenID client credentials from the previous step of registering Abiquo as a client application
Activate OpenID in abiquo.properties, by setting abiquo.auth.module to openid
Info |
---|
If your OpenID Connect provider implements the Discovery extension, you might be able to get the value of the different endpoints, |
The following sequence diagram shows how the different endpoints are used from a user and relying party perspective.
The diagram depicts the interactions between all parties involved in the OpenID Connect protocol.
Table of Abiquo OpenID Connect properties
To enable the OpenID Connect mode, configure the following properties in Abiquo:
Property | Description |
---|---|
OpenID Connect server configuration | |
abiquo.auth.module | The Abiquo authentication module. Must be: openid |
abiquo.openid.cookie.maxage | After OpenID authentication flow, the API redirect adds a cookie with the access_token and the id_token. |
abiquo.openid.cookie.refreshtoken.include | If true, the OpenID authentication cookie will also contain the refresh token. |
abiquo.openid.target | The URL where the user will be redirected from the Identity Server upon successful authentication. Something like |
abiquo.openid.role-claim | The name of the claim returned by the authorization server that contains the names used to map the user permissions to an Abiquo role |
abiquo.openid.enterprise-claim | The name of the claim returned by the authorization server that contains the names used to map the Abiquo enterprise where the user belongs |
abiquo.openid.enterprise-property | (Optional) If present, Abiquo will try to find an enterprise that has a property with the name configured in this property. |
abiquo.openid.issuer | The OpenID Connect authorization issuer. |
abiquo.openid.authorization.endpoint | The OpenID Connect authorization endpoint. This endpoint must be accessible from the user's browser |
abiquo.openid.token.endpoint | The OpenID Connect token endpoint. This endpoint must be accessible from the Abiquo server. |
abiquo.openid.userinfo.endpoint | The OpenID Connect user info endpoint. This endpoint must be accessible from the Abiquo server. |
abiquo.openid.jwks.endpoint | The OpenID Connect JWKS endpoint. This endpoint must be accessible from the Abiquo server. |
abiquo.openid.endsession.endpoint | (Optional) If configured, Abiquo will attempt to perform a global logout performing a request to this endpoint. |
OpenID Connect client configuration | |
abiquo.openid.client.name | The name of the client that has been registered in the OpenID Connect server for the Abiquo platform. |
abiquo.openid.client.id | The ID of the client that has been registered in the OpenID Connect server for the Abiquo platform. |
abiquo.openid.client.secret | The secret of the client that has been registered in the OpenID Connect server for the Abiquo platform. |
abiquo.openid.client.scopes | Comma separated list of scopes to request during authentication. Must have, at least: openid,profile,email. Also supports: phone. |
abiquo.openid.client.redirect-uris | Comma separated list of allowed redirect (callback) URIs used during the authentication flow. Must be: http://<api endpoint>/api/openid_connect_login |
abiquo.openid.client.acr-values | Space separated values for the acr values to send to OpenID Connect Server when authenticating. |
abiquo.openid.client.acr-validation | Activates the acr values validation. Default value is true |
Configure Abiquo outbound API module
...
In OpenID Connect mode, the normal authentication (using HTTP Basic Authentication) is disabled, so you must configure the Outbound API credentials as OAuth tokens. To do this:
Create a new application for the "default api outbound user" as explained in the "Manage OAuth Applications" guide, and set all the privileges for that user; OR
Create the application in the administrator account, and select only the permissions for the "default api outbound user"Get the OAuth access tokens. You can use an unsupported Abiquo tool to obtain the access tokens.
Please contact Abiquo Support to obtain the Abiquo tool.In the abiquo.properties file of the Abiquo Server
Configure the following OAuth properties
abiquo.m.consumerKey
abiquo.m.consumerSecret
abiquo.m.accessToken
abiquo.m.accessTokenSecret
And remove the following properties
abiquo.m.identity
abiquo.m.credential
Configure OpenID Connect logout
...
Configure the OpenID Connect client UI properties in the client-config-custom.json file.
Property | Description |
---|---|
client.openid.enabled | Deprecated in Abiquo 4.7.1 |
client.openid.skip.login.view | Deprecated in Abiquo 4.7.1 for UI 5. By default, when in OpenID mode, Abiquo shows an initial screen with a link to the Authentication portal. |
client.skip.login.view | By default, when in OpenID mode, Abiquo shows an initial screen with a link to the Authentication portal. |
client.auth.module | Abiquo login modules to use with options for Basic Auth (default), Open ID, and SAML. See client-config-default.json for examples |
Configure API and outbound clients
...
To obtain an access token:
Manually log in to the platform
When you are redirected back to the Abiquo console, you'll find the access token and refresh token in the URI.
Once you have the token, you can issue requests to the API by providing the following HTTP header:
...