Embedded app connection and authentication issues
Use this guide when your embedded app shows "Failed to respond," doesn't load in the iframe, or returns 401 or token errors. Follow the solutions below to fix handshake, CSP, and token handling issues.
App shows timeout or "failed to respond"
Failed to respond
Cause
Your app doesn't complete initialization in time. This can happen if the app doesn't send the ready signal, or if startup code throws an error.
Solution
- Open the browser developer tools and check for errors in the Console.
- Initialize authentication as early as possible in your app startup code.
- If you implemented
postMessagemanually, sendIFRAME_READYimmediately after receivingATLAN_HANDSHAKE. - Confirm
allowed_originsincludes your app origin (for example,https://app.company.com).
Asset GUID is missing in profile tab
Asset GUID is missing in profile tab
Cause
Atlan only sends an asset GUID when your app renders in the asset-profile-tab slot and the slot conditions match the current asset.
Solution
- Confirm the app is configured to render in the
asset-profile-tabslot. - If the app uses conditional rendering, confirm
when.assetTypesincludes the asset type you are testing. - In your app, read the GUID from
context.page.params.id.
App can't be embedded in iframe
Refused to display in a frame
Cause
Your app blocks iframe embedding through response headers, such as CSP frame-ancestors or X-Frame-Options.
Solution
-
Add a CSP header that includes Atlan as a
frame-ancestorsorigin:Content-Security-Policy: frame-ancestors 'self' https://*.atlan.com; -
Remove or change
X-Frame-Optionsif it blocks embedding. Values likeDENYandSAMEORIGINprevent Atlan from loading your app in an iframe. -
Verify the header on your deployed URL:
curl -I https://app.company.com | grep -i content-security-policy
App doesn't receive messages from Atlan
Cause
Your app ignores messages because the origin doesn't match, or messages are posted to the wrong target origin.
Solution
- Confirm your app validates the parent origin (your Atlan tenant), for example
https://your-tenant.atlan.com. - Confirm you never use
'*'as thetargetOriginwhen callingpostMessage. - Confirm
allowed_originsin your app registration matches your app's deployed origin.
API calls fail with 401 or token errors
Cause
Your app uses an expired token, doesn't refresh tokens, or keeps tokens after session end.
Solution
- Use the Atlan Auth SDK so token refresh and session changes are handled automatically.
- If you implement
postMessagemanually, request a fresh token before expiry usingIFRAME_TOKEN_REQUEST. - Clear cached tokens and session state when your app receives
ATLAN_LOGOUT.
See also
- Embed your app: Prepare your app for iframe embedding
- Register your app: Confirm
iframe_url,allowed_origins, and render slots - Send and receive messages: Message types and payload shapes
- Embedded apps security FAQ: Security considerations and token handling
Need help
If you need assistance after trying the steps, contact Atlan support: Submit a request.