Generate a Thomson Reuters Account token
Generate and use a Thomson Reuters Account token by transfer type: Client Credentials, Client Assertion (JWTCA), or Authorization Code.
Learn how to generate and use a Thomson Reuters Account token by transfer type. Downstream API calls don't change. Send your token the same way you do today, using Authorization: Bearer <token>. Only how you obtain the token differs.
Machine application (client credentials)
Machine Applications use the OAuth 2.0 Client Credentials transfer to get a token directly from Thomson Reuters Account.
Field | Value |
|---|---|
Token endpoint | Non-PROD: auth-nonprod.thomsonreuters.com/oauth/token
PROD: auth.thomsonreuters.com/oauth/token |
Grant type | client_credentials |
Required parameters | client_id, client_secret, audience |
Token format | Signed JSON Web Token (JWT) |
Token lifetime | 24 hours |
Rate limit | 40 token requests per hour, per client |
Sample request:
curl --location 'https://auth-nonprod.thomsonreuters.com/oauth/token' \ --header 'Content-Type: application/json' \ --data '{ "client_id": "<<ClientId>>", "client_secret": "<<Secret>>", "audience": "https://cis-api-nonprod.thomsonreuters.com", "grant_type": "client_credentials" }'
important
- Use the Thomson Reuters Account URL for token generation. Use the Apigee or product endpoint URL for API calls; these are different hosts.
- Request a token for each API product you use. A single token maps to only 1 audience, so cache a separate token per product.
- Cache every token until it's about to expire or has expired, then request a new one. Don't request a new access token on every API call. Thomson Reuters may rate-limit or block your client.
Use the token to call APIs
Once you receive the token, send it as Authorization: Bearer <token> against the product API. Downstream API calls work the same way; only how you obtained the token differs.
- Authorization header:send the token as a bearer token, the same as today. Use Authorization: Bearer <token>. The token is now a Thomson Reuters Account (Auth0) JWT, not an Apigee opaque token.
- Scopes and products:Apigee continues to govern authorization scopes. Your token's audience maps to the products you're entitled to call.
- Validation:Apigee verifies your token locally against Thomson Reuters Account (Auth0)'s published signing keys. This change adds no extra network call or slow down.
Rotate your Client Secret at least once every 12 months. We don't enforce this automatically, so schedule it yourself, following your organization's security policy.
Machine application (client assertion) JWTCA
Machine Applications can also authenticate with Client Assertion, also called JWTCA, or the private_key_jwt method, instead of sharing a Client Secret. Your application signs a short-lived JWT with a private key and presents the signed assertion to prove its identity. Thomson Reuters Account validates the assertion against the public key you registered during onboarding.
Select this transfer if your organization's security policy prefers key-based authentication over shared secrets, or if you want to avoid the work of rotating secrets.
During onboarding, generate an asymmetric key pair using RS256 or RS384. Register the public key with the Thomson Reuters Account for your Machine Application. If you're upgrading an existing Client Assertion application, Thomson Reuters Account reuses your registered public key automatically and sets up your Thomson Reuters Application for you. You can change the certificate afterward if needed. Keep your private key in your environment. Use it only to sign the assertion JWT locally.
Field | Value |
|---|---|
Token endpoint | Non-PROD: auth-nonprod.thomsonreuters.com/oauth/token
PROD: auth.thomsonreuters.com/oauth/token |
Grant type | client_credentials |
Client assertion type | urn:ietf:params:oauth:client-assertion-type:jwt-bearer |
Required parameters | client_assertion_type, client_assertion, audience. The client_assertion value is your signed JWT. |
Assertion JWT lifetime | Short-lived. Auth0 supports a maximum of 5 minutes; we recommend 1 minute. |
Token format/lifetime | Signed JWT / 24 hours |
Rate limit | 40 token requests per hour, per client |
Claim | Requirement | Description |
|---|---|---|
iss | Required | Your application's Client ID |
sub | Required | Your application's Client ID |
aud | Required | The URL of the Thomson Reuters Account tenant or domain that receives the assertion |
exp | Required | Expiration time. Use the shortest expiry. The maximum is 5 minutes. |
jti | Required | A unique claim ID per request. Use a UUID. This prevents replay. |
Sample: exchanging a JWT assertion for an access token:
curl --location 'https://auth-nonprod.thomsonreuters.com/oauth/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'audience=<<audience>>' \ --data-urlencode 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' \ --data-urlencode 'client_assertion=<<JWT Assertion>>'
note
- Sign a new assertion JWT for every token request. Don't reuse a previous assertion. Thomson Reuters Account verifies thejtiand timestamp claims to prevent replay.
- Store your private key the same way you store a Client Secret. Use a secrets manager or a hardware-backed key store, never source code.
- A Machine Application supports either Client Assertion or Client Credentials, not both.
- Cache every token until it's about to expire or has expired, then request a new one. Don't request a new access token on every API call; Thomson Reuters treats this as abuse.
Send a token from this transfer the same way you send a Client Credentials token. Use the header Authorization: Bearer <token> when you call the product API.