From 5e1a6a130d540409b1d0c670131e151494d9e80a Mon Sep 17 00:00:00 2001 From: Tyler Date: Wed, 1 Jul 2026 16:58:08 -0600 Subject: [PATCH 1/2] fix(smartling): use oauthCallback to fix id_token not present in TokenSet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Smartling's SSO returns only access_token and refresh_token — no id_token. client.callback() calls validateIdToken() after the code exchange and throws "id_token not present in TokenSet" when id_token is absent. client.oauthCallback() performs the same authorization_code grant but skips id_token validation entirely, which is correct here since the app only ever uses access_token and refresh_token. Confirmed broken in prod via CloudWatch: sls-apps-smartling-prd-app logging "Smartling OAuth failed with message: id_token not present in TokenSet" on every auth attempt. Co-Authored-By: Claude Sonnet 4.6 --- apps/smartling/lambda/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/smartling/lambda/src/index.ts b/apps/smartling/lambda/src/index.ts index c8effd01a0..5eaf0f2b49 100644 --- a/apps/smartling/lambda/src/index.ts +++ b/apps/smartling/lambda/src/index.ts @@ -51,7 +51,7 @@ export function makeApp(fetchFn: any, issuer: any) { try { const params = client.callbackParams(req); - const data = await client.callback('', params); + const data = await client.oauthCallback('', params); res.redirect( `/frontend/index.html?access_token=${data.access_token}&refresh_token=${data.refresh_token}` From d59f6dad9239df1263dd6dcb8a62a16ddb36da81 Mon Sep 17 00:00:00 2001 From: Tyler Date: Wed, 1 Jul 2026 17:04:23 -0600 Subject: [PATCH 2/2] test(smartling): update mock to use oauthCallback Co-Authored-By: Claude Sonnet 4.6 --- apps/smartling/lambda/src/index.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/smartling/lambda/src/index.spec.ts b/apps/smartling/lambda/src/index.spec.ts index 3b59107696..253c4f04b3 100644 --- a/apps/smartling/lambda/src/index.spec.ts +++ b/apps/smartling/lambda/src/index.spec.ts @@ -27,7 +27,7 @@ class Client { return { code: '1234' }; } - async callback() { + async oauthCallback() { return { access_token: 'access-123', refresh_token: 'refresh_token-123',