Clients
Integrations > Security > OAuth > Clients
The Clients screen lists and configures all OAuth clients that may connect to an instance of Medallia Experience Cloud. OAuth clients are applications that request or use resources served from Medallia Experience Cloud. A client is typically a single application or service, such as mobile application like Medallia Mobile or external service that requests data from Experience Cloud.
There are several OAuth authorization-schemes available for providing the authorization, and different types of clients require different authorization configurations. While some global settings are defined on the Configuration screen, each type of scheme has specific settings that are unique to the client, and in some cases override the global settings.
The Clients screen lists each client. Names that end with "(Internal)" are used by Medallia Experience Cloud and should not be changed or deleted without first consulting with Medallia.
-
Timeouts to override the global settings
-
Refresh token, expire after idle, and IP allow-list properties
-
Client secret (for applications using the APIs.
Click on a name in the list to view or edit the client.
Properties
- Client ID
- (Do not change) Unique name of the client. This is the
client_idparameter applications pass this to OAuth server. - Description
- Text description of the client. Use this to record notes about the client, such as, what the client was created for, who the contact is for the client, and when it was created.
- Active
- When active, the client is processing authentication requests. A client may become inactive after a number of failed authentication attempts, as defined by the Invalid client authn tries option.
- Platform OAuth Subject
- Checking this enables this client to be a subject for platform OAuth client assertions.
- Client secret status
- Whether or not a client secret has already been generated for this client.
- Generate new client secret
- Clicking this option generates a new client secret for this client. After clicking (and confirming) this option, the new client secret is reported at the bottom of the page. This is the only time the client secret will be shown, so make a note of it.
- Invalid client authn tries
- Reports the count of times authorization attempts have failed for this client. This option is only available for Confidential clients.
- Max client authn tries
- Max count of tries allowed before the client is blocked (made inactive). Enter zero (0) to disable this feature. This option is only available for Confidential clients.
- Confidential
- (Do not change) Indicates the client is capable of keeping the Client Secret secure, such as when the client is a back-end server with restricted access. This must be on for Client Credential grant-types.
- Issue Refresh Token
- The client may request a refresh token. Generally this is turned on. Some configurations turn this off when the Authorization code lifetime timeout setting is sufficiently long enough to accomplish the task in the request, such as a single API request or update. Note: Applications that use refresh tokens must store them securely.
- Expire refresh token after an idle timeout
- Automatically revoke access (sign-out) the client when the client is idle or inactive for a period of time defined by the Refresh token idle timeout property. See User sessions for a discussion about sessions and automatically expireing them.
- Issue OpenID Token
- (Do not change) Allows the client to request an OpenID ID Connect token (for authorization) by including the
openidparameter in the list of requested scopes. This is primarily for communication between secure, internal services. - Enforce IP allow-listing on access token refresh
- Client must use an allow-listed IP address when requesting the access token. See Allow OAuth clients for detailed information.
- Grants
- (Do not change) The type authorization method to use. Grant-types are:
- Authorization code Grant (for WebApp and Mobile clients)
- The authorization code is obtained an authorization server. Instead of requesting authorization directly from the resource owner, the client directs the resource owner to an authorization server (the the Redirect URIs for client property), which in turn directs the resource owner back to the client with the authorization code. Before directing the resource owner back to the client with the authorization code, the authorization server authenticates the resource owner and obtains authorization. Because the resource owner only authenticates with the authorization server, the resource owner's credentials are never shared with the client.
- Client Credentials Grant (for backend services)
- The client is associated with one of the AppID Accounts: everything the account has permission to access is also available to the client. When using this grant-type, the Client subject property identifies the account. Restriction: When using this grant type, turn on Confidential or the authorization will fail.Note: This grant-type is for accounts with secret codes, as opposed to Resource Owner grants which are accounts with sign-in privileges.
- Implicit Grant (for JavaScript clients)
- The client is an internal JavaScript application that directly retrieves the access token. It cannot be trusted with a client secret, and it does not get an refresh token. The app and server use the Redirect URIs for client property to pass the token. Restriction: This grant-type is not supported at this time.
- JWT Bearer Grant (for clients that have tokens from another IdP)
- Must also define the JWT Bearer Grant properties. Restriction: This grant-type is for internal-use only.
- Resource Owner Grant (for simple user/pw clients)
- The client is associated with a Users account: everything the account has permission to access is also available to the client. When using this grant-type, the Client subject property identifies the account. Restriction: Thiis grant-type is not supported at this time.
- Token Exchange Grant (for certain Multi-tenant clients)
- Internal use only.
- Redirect URIs for client
- (Do not change) The URI where the authorization code is sent for redirection based grants: Authorization code for Grant and Implicit Grant.
- Client subject
- (Do not change) The AppID Accounts to use when Grant is either Client Credentials Grant or Resource Owner Grant. The client will assume this AppID's access permissions to Medallia Experience Cloud.
- Post logout redirect uris
- Redirect the user to this URI after signing-out.
Consent Form
Consent forms ask user-clients to agree to trust the application to connect to Medallia Experience Cloud. The user must consent or the application will not be allowed to connect to the servers.
When using a consent forms, users see a dialog the first time they connect to Medallia Experience Cloud. The dialog includes options to agree or disagree to connect, and it optionally includes the following information:
-
A name or title for the consent form
-
A description asking for consent
-
A link to a web page for more information
-
An image (usually the company logo), retrieved from a URI
- Ask end user for consent
- Whether or not to prompt client/users to consent to connecting to Medallia Experience Cloud.
- Name
- Name or title to include in the consent form.
- Description
- Text to include in the dialog asking users them to consent to using OAuth.
- Web URI
- URI to include in the consent dialog. This should link to a company web page, possibly one that provides detailed information about the necessity for consenting to use OAuth.
- Logo
- URI to an image to include in the consent dialog.
Token Timeout Overrides
Timeout properties determine how long and how often clients have access to a server's resources. The timeouts are defined globally for the instance on the Configuration screen screen. Use the properties on this screen to override the global values specifically for this client.
Initially these properties are read-only showing the global settings. To make these properties editable (to override the global settings):
-
Turn on the Override default token timeouts property
-
Click Save.
The override properties are now editable.
- Access token lifetime (seconds)
- Access tokens grant access to resources for a short period of time. After the expire, the application may request new tokens.
- Refresh token lifetime (hours)
- Refresh tokens authorize clients to request access tokens for a period of time. After they expire, clients must re-authenticate (such as re-sign in) to acquire a new refresh token.
- Refresh token idle timeout (seconds)
- Refresh idle is how long the token may be idle (unused) before forcing the client to re-authorize (re-sign-in).
- Authorization code lifetime (seconds):
- (read-only) Authorization codes are one-time use-codes used during authorization. The OAuth server issues the code to the client, and the client must immediately return it to the OAuth server when requesting the first access token.
JWT Bearer Grant configuration
JSON Web Token (JWT) is an open standard for securely transmitting information in a JSON object. The information is digitally signed using a public/private key pair using the RSA or ECDSA standard.
For a discussion about how public and private keys work, see SSH key pairs.
Key rotation
The OAuth server supports key rotation to allow the periodic changing of the public key used to sign JWT tokens. However, to avoid interruption of access, the server recognizes both the new and old keys. Each key has a unique Key ID that identifies it. Applications include the ID in the kid header parameter of the JWT token to indicate which key was used to sign the token. The server then uses the ID to know when key was used for decrypting the token.
To rotate keys:
-
Copy the Key ID value to the Key ID Old parameter.
-
Copy the Public Key value to the Public Key Old parameter.
-
Enter a new Public Key value.
-
Enter a new Key ID value.
-
Click Save to apply the settings to the server.
-
Notify all clients to start using the new key and key ID.
- Issuer
- The issuer for the JWT tokens
- Audience
- Audience claim for incoming JWT tokens. All incoming JWT tokens must have an
audheader parameter and it must be set to this value. - Key ID
- A unique string associated with the Public Key for the purpose of identifying the key when using key-rotation (see above). This is the value the application must include in the
kidheader parameter of the JWT token to indicate the public key that signed the token.Tip: This value is required when using key-rotation, but optional otherwise. However, it is good practice to use the Key ID in the event you later chose to use key-rotation. - Public Key (RSA or EC)
- Public key for signing JWT tokens. Must be RSA 2048 bits, or Elliptic Curve P256, P384, or P513 algorithms. HMAC signatures are not supported.
- Key Alg
- (read-only) algorithm used to create the Public Key.
- KeyId Old
- Key ID associated with the Public Key Old key when using key-rotation (see above).
- Public Key Old (RSA or EC)
- Previous Public Key value when using key-rotation (see above).
- JWKS URI for client's public keys
- URI for locating the Key ID and Public Key. When specified, the keys provided in the URI are used instead of the Key Id and Public Key properties (if they are also specified).
- Disable TLS validation and Hostname verification on JWKS URI access
- Disable transport layer security (TLS) validation and hostname verification during the SSL handshake step when accessing the JWKS URI. Only do this during for development and quality assurance (QA) clients. For security, never disable this for production clients.
- Current JWKS keys
- (read-only) List of the active JWKS keys.
