Setting Up Mutual Transport Layer Security
Mutual Transport Layer Security (mTLS) offers a way for servers to verify the identity of the client application that is requesting information. With mTLS, the client application is required to send a client identity certificate to the server, which will be used to verify the client's identity. Mutual authentication adds an additional layer of security by ensuring that traffic is both secure and trusted in both directions between the client application and the server.
Terminology
The following are key terms used throughout this article:
|
Term |
Description |
|---|---|
|
Inbound |
Traffic is coming into OneTrust APIs from client applications. |
|
Outbound |
Traffic is going to external client applications from OneTrust Integrations. |
To configure inbound mTLS (into OneTrust)
Configuring inbound mTLS is an additional layer of security used when calling OneTrust APIs and Webhooks that allows the OneTrust Platform to verify that traffic coming into the OneTrust Platform is both secure and trusted. When mutual authentication is enabled, Site admins can upload a client identity certificate against the client credentials configuration. This allows OneTrust to achieve certificate pinning, which means that the certificate uploaded to OneTrust holds the public key used for digital signing at client side (using the corresponding private-public keypair). OneTrust makes use of standard mTLS at layer 4 (transport layer) and additionally completes certificate pinning verification in a callback at layer 7 (application layer) before allowing communication with the OneTrust Platform.
In order to configure inbound mTLS for when a client application initiates a connection with OneTrust, you must:
- Have a custom domain targeted for the OneTrust Admin application instance
-
A custom domain is required to configure mTLS. You can either create a new account or convert an existing account to obtain a customer-specific custom domain. For more information, see Customizing OneTrust with a Custom Subdomain.
- Update integrations with your custom URL
-
Once you have a custom domain, you must update your integrations to use your custom URL (i.e. youramazingcompany.my.onetrust.com) rather than the standard OneTrust assigned URL (i.e. app.onetrust.com).
curl --location --request GET 'https://trial.onetrust.com/api/scim/v2/Groups?startIndex=1&count=10' \
--header 'Authorization: Bearer {oauth_token}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--cert /path/to/cert.pem \
--key /path/to/key.pem \
--pass {passcode}
Step 1: Create an OAuth 2.0 Client Credential
For more information, see Managing OAuth 2.0 Client Credentials.
Step 2: Upload a client identity certificate
Step 3: Configure your API integration with the client credential
Configure your API integration to use the OAuth 2.0 Client Credential and sign all requests to the OneTrust Platform with the certificate you uploaded in step 2. If the signature matches that of the certificate uploaded for that client credential, access will be granted. If the signature does not match the uploaded certificate or is tampered, access will be denied.
The following is an example of a Client URL (cURL) request:
curl --location --request GET 'https://trial.onetrust.com/api/scim/v2/Groups?startIndex=1&count=10' \
--header 'Authorization: Bearer {oauth_token}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--cert /path/to/cert.pem \
--key /path/to/key.pem \
--pass {passcode}
To configure outbound mTLS (from OneTrust Integrations module)
Configuring outbound mTLS allows external servers to verify that traffic coming from the OneTrust Platform is both secure and trusted. You can enable mTLS for all credentials with HTTP connector types to establish secure and trusted connections with external servers. This only applies to outbound connections made by actions in integrations which use this credential type.
In order to configure outbound mTLS for connections initiated by OneTrust, you must:
Step 1: Create an Integration Credential
Enable mutual transport layer security (mTLS) for any credential using the Web App connector type to establish secure and trusted connection with external servers. mTLS can be used as the only form of authentication by selecting Custom in the Auth Type field. Alternately, mTLS can be used as an additional form of authentication for any of the standard web app connector types.
For more information, see Configuring Integration Credentials.
Step 2: Configure mTLS authentication for the credential
Step 3: Select the credential to authenticate one or more actions in your integration(s)
After you've configured credentials that will allow OneTrust to access the application for the integration, you can create integrations to bring together common actions in third-party systems with supplemental actions in the OneTrust Platform.
For more information, see Creating Integrations.
For outbound mTLS, OneTrust does not require the certificate to be signed by a trusted authority so long as the receiving end can accept it. For inbound mTLS, OneTrust requires the uploaded public keys to be signed by a trusted certificate authority.