fix(common): support id_token in Authorization Code OAuth flow (#6144)

This commit is contained in:
Anwarul Islam 2026-04-28 01:04:02 +06:00 committed by GitHub
parent 696ddc336c
commit 15d12f8ce5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -189,7 +189,6 @@ const initAuthCodeOauthFlow = async ({
return E.left("INVALID_AUTH_ENDPOINT") return E.left("INVALID_AUTH_ENDPOINT")
} }
url.searchParams.set("grant_type", "authorization_code")
url.searchParams.set("client_id", clientID) url.searchParams.set("client_id", clientID)
url.searchParams.set("state", state) url.searchParams.set("state", state)
url.searchParams.set("response_type", "code") url.searchParams.set("response_type", "code")
@ -289,18 +288,31 @@ const handleRedirectForAuthCodeOauthFlow = async (localConfig: string) => {
return E.left("AUTH_TOKEN_REQUEST_FAILED" as const) return E.left("AUTH_TOKEN_REQUEST_FAILED" as const)
} }
const withAccessTokenSchema = z.object({ const withAccessTokenSchema = z
access_token: z.string(), .object({
access_token: z.string().optional(),
id_token: z.string().optional(),
refresh_token: z.string().optional(), refresh_token: z.string().optional(),
}) })
.refine((data) => data.access_token || data.id_token, {
message: "Either access_token or id_token must be present",
})
const parsedTokenResponse = withAccessTokenSchema.safeParse( const parsedTokenResponse = withAccessTokenSchema.safeParse(
responsePayload.right responsePayload.right
) )
return parsedTokenResponse.success if (!parsedTokenResponse.success) {
? E.right(parsedTokenResponse.data) return E.left("AUTH_TOKEN_REQUEST_INVALID_RESPONSE" as const)
: E.left("AUTH_TOKEN_REQUEST_INVALID_RESPONSE" as const) }
return E.right({
access_token:
parsedTokenResponse.data.access_token ||
parsedTokenResponse.data.id_token ||
"",
refresh_token: parsedTokenResponse.data.refresh_token,
})
} }
const generateCodeVerifier = () => { const generateCodeVerifier = () => {