🔐Authentication
Last updated
Last updated
To embed a Story, Tile, or Dashboard Builder within your environment, you’ll need to authenticate each embed. Our authentication system is designed to be both secure and flexible. Without duplicating your user database in Toucan, you can pass a user context that dynamically segments data.
Embed Manager Interface
The admin interface allows you to manage embeds and set up authentication.
Path: Admin Area > Embed Manager > Embed Settings
Generate a client secret by clicking "Re-generate secret" in the Embed Manager.
Once generated, copy and store it securely, as it will disappear upon refreshing the page. Each new secret invalidates any previously issued tokens.
You have two methods to manage authentication tokens securely:
RSA Key Pair Management: Generate and manage a single RSA key pair to sign JWT tokens. Recommended key strength: at least 2048 bits (in this example, we use 4096 bits).
Once generated, upload the public key to your Toucan admin area.
Using a JWKS Endpoint: For environments that support a JWKS endpoint (more information on JWKS), this option allows you to rotate keys for enhanced security.
To authenticate your embeds, create a JWT token signed with your private key. This JWT token does not pass through the user's browser; it links a user to their context through an opaque token sent to our authentication service.
Code example in JS
Other code examples lie in your Embed Settings interface.
JWT Token's payload
sub: subject of the JWT. Shared in your Embed Interface settings.
iss: issuer of the JWT. Shared in your Embed Interface settings.
aud: recipient for which the JWT is intended. Shared in your Embed Interface settings.
exp: time after which the JWT expires, in timestamp. Should follow your own authentication expiration policy.
jti: unique identifier; can be used to prevent the JWT from being replayed. You have to generate a random string.
embed_context: object that represents the user and his context. Let's dive in.
username: it will represent your user. We recommend using the user's email but you could also use a unique identifier.
roles: USER or ADMIN. For your users, we recommend to let USER. For your SDK Key, for instance, ADMIN should be used. (cf. authenticate Embed SDK)
privileges: object that describes your user access's right to apps.
keys are Apps' IDs (cf. find Apps' IDs)
value is an enum on ["view", "validator", "contribute"] (more information in user management section)
groups: user groups defined in Toucan. Can be useful to define visibility rules based on user groups.
attributes: arbitrary variables that give additional context to the user. Most of the time, it includes information that allows data segregation on Live Data implementation.
secrets: variables used to send data to the Toucan tenant that will not be displayed. This section is used for variables that must remain secret, such as passwords or tokens.
Warning
As of today, we can't support a user context bigger than 3.5KB. Toucan won't raise an error if it exceeds it, it will truncate it. If you encounter odd issues, please use the "Check token" in Embed Settings to ensure that your user's context is complete and not truncated.
To create an opaque token, use the JWT token crafted earlier. This token does not contain sensitive information but connects to the previously provided user context.
Curl example
Parameters
CLIENT_SECRET: string retrieve after uploading your public key
OAUTH_SERVER_URL: URL of our own authentication service. Shared in the Embed Settings interface.
TENANT_ID: id of your tenant. Shared in the Embed Settings interface.
JWT_TOKEN: token that represents your user, crafted in the previous step.
Once your opaque token is generated, pass it to the embed script in your application.
Example
Static insertion
Programmatic insertion
(cf. Embed SDK and Embed SDK Authentication)
SDK_AUTH_TOKEN: A token generated with admin rights to access all your embeds
EMBED_ID: Can be found in the Dashboards tab of your apps, or directly in the Embed Manager.