For external authentication, TDGSS exchanges the JWT with Central IdP, and after the exchange TDGSS validates the user. This is done by identifying if the JWT comes from Central IdP or from an external identity provider. TDGSS uses the issuer “iss” claim in the JWT payload to identify the identity provider. The client application attempts to authenticate to the database as follows:
- When the client authenticates, the Gateway sends the client a configuration response containing the ClientId (such as sso-dev) and the IdpUrL (such as https://sso-idp-dev.iam.teradatacloud.io/.well-known/openid-configuration). This information is defined in the TdgssUserConfigFile.xml in the <GlobalValues> section.
- The client then requests a JWT token from the external IdP.
- The client sends the JWT to the Gateway to log the session on.
- The Gateway validates the token:
- TDGSS examines the payload to get the issuer claim.
- TDGSS gets the Central IdP issuer claim from the TDGSS configuration.
- TDGSS compares the Central IdP issuer and the JWT “iss” claim.
- If the issuers don’t match, a token exchange is done:
- From the configuration, TDGSS gets the issuer of the configured external identity provider.
- TDGSS compares the external IdP issuer and the “iss” claim from the JWT.
- If they don’t match, an error is generated and the user is not authenticated.
- If they match, a REST API call is made to exchange the JWT from the Central IdP.
- After exchanging the JWT from Central IdP, TDGSS validates the JWT.
- The JWT is saved in the session control table to use it to authenticate to other Vantage services.
To configure the JWT mechanism for token exchanger validation, see Validation by Token Exchanger.
The following table shows the required information to get an exchange token from the central IdP:
Parameter | Description |
---|---|
subject_issuer | The alias name with which external IdP (the access token issuer), is registered with the central IdP. This parameter is required only for the central IdP. |
subject_token | A valid JWT access token issued by the external IdP. |
client_id | The client id of the target application registered with the central IdP that intends to use the exchanged token. The mappers associated with client_id decide the content of the exchanged token. |
client_secret | The client secret of the target application. |
subject_token_type | Constant value: urn:ietf:params:oauth:token-type:access_token |
grant_type | Constant value: urn:ietf:params:oauth:grant-type:token-exchange |
token_endpoint | The /token endpoint of the central IdP. It is usually a URL in this form: https://<idp-host>/auth/realms/<realm name>/protocol/openid-connect/token |