diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 4150eab303..ce82eab6ea 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -10,6 +10,7 @@ import { getActiveIdentityProviders, getAuthRequest, getOrgsByDomain, + getSAMLRequest, listSessions, startIdentityProviderFlow, } from "@/lib/zitadel"; @@ -432,6 +433,13 @@ export async function GET(request: NextRequest) { } } else if (requestId && requestId.startsWith("saml_")) { // handle saml request + const { samlRequest } = await getSAMLRequest({ + serviceUrl, + serviceRegion, + samlRequestId: requestId.replace("saml_", ""), + }); + + samlRequest?. } else { return NextResponse.json( { error: "No authRequest nor samlRequest provided" }, diff --git a/apps/login/src/lib/zitadel.ts b/apps/login/src/lib/zitadel.ts index ec628b8102..72fd015f88 100644 --- a/apps/login/src/lib/zitadel.ts +++ b/apps/login/src/lib/zitadel.ts @@ -1034,6 +1034,26 @@ export async function createCallback({ return oidcService.createCallback(req); } +export async function getSAMLRequest({ + serviceUrl, + serviceRegion, + samlRequestId, +}: { + serviceUrl: string; + serviceRegion: string; + samlRequestId: string; +}) { + const samlService = await createServiceForHost( + SAMLService, + serviceUrl, + serviceRegion, + ); + + return samlService.getSAMLRequest({ + samlRequestId, + }); +} + export async function createResponse({ serviceUrl, serviceRegion,