From 2794e18e3db1a3537338ee95c2862b6661d01a15 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 11 Mar 2025 16:09:15 +0100 Subject: [PATCH 1/8] fix: saml requestId serializing --- apps/login/src/app/login/route.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 2db81e070e..57f2d91c8b 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -81,9 +81,12 @@ export async function GET(request: NextRequest) { // internal request id which combines authRequest and samlRequest with the prefix oidc_ or saml_ let requestId = - searchParams.get("requestId") || - `oidc_${oidcRequestId}` || - `saml_${samlRequestId}`; + searchParams.get("requestId") ?? + (oidcRequestId + ? `oidc_${oidcRequestId}` + : samlRequestId + ? `saml_${samlRequestId}` + : undefined); const sessionId = searchParams.get("sessionId"); From a45982d798c0d91afb67d9eb534c051dde32f037 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 11 Mar 2025 16:59:04 +0100 Subject: [PATCH 2/8] fix form post --- apps/login/src/app/login/route.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 57f2d91c8b..14f3274af3 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -476,8 +476,8 @@ export async function GET(request: NextRequest) { return NextResponse.redirect(url); } else if (url && binding.case === "post") { const formData = { - key1: "value1", - key2: "value2", + relayState: binding.value.relayState, + samlResponse: binding.value.samlResponse, }; // Convert form data to URL-encoded string From 9ab02cb3d95bf92cb217dd97daa62d771bdfde70 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 11 Mar 2025 17:08:37 +0100 Subject: [PATCH 3/8] formdata --- apps/login/src/app/login/route.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 14f3274af3..4491904d95 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -481,12 +481,10 @@ export async function GET(request: NextRequest) { }; // Convert form data to URL-encoded string - const formBody = Object.entries(formData) - .map( - ([key, value]) => - encodeURIComponent(key) + "=" + encodeURIComponent(value), - ) - .join("&"); + const formBody = new FormData(); + + formBody.append("relayState", formData.relayState); + formBody.append("samlResponse", formData.samlResponse); // Make a POST request to the external URL with the form data const response = await fetch(url, { From 3bed1c7b278800dab6ee4de8f436dd8ad2bbd8a6 Mon Sep 17 00:00:00 2001 From: Stefan Benz <46600784+stebenz@users.noreply.github.com> Date: Tue, 11 Mar 2025 17:19:32 +0100 Subject: [PATCH 4/8] fix: saml attributes for form post --- apps/login/src/app/login/route.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 4491904d95..0aba32e76e 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -483,9 +483,10 @@ export async function GET(request: NextRequest) { // Convert form data to URL-encoded string const formBody = new FormData(); - formBody.append("relayState", formData.relayState); - formBody.append("samlResponse", formData.samlResponse); - + formBody.append("RelayState", formData.relayState); + formBody.append("SAMLResponse", formData.samlResponse); + console.log(url) + console.log(formBody) // Make a POST request to the external URL with the form data const response = await fetch(url, { method: "POST", @@ -494,6 +495,7 @@ export async function GET(request: NextRequest) { }, body: formBody, }); + console.log(response) // Handle the response from the external URL if (response.ok) { From 2ecd8bad5953ae60f9e95ac6e84501b401865ad2 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 12 Mar 2025 08:41:26 +0100 Subject: [PATCH 5/8] cleanup --- apps/login/src/app/login/route.ts | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 0aba32e76e..edcbefa9c2 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -475,18 +475,12 @@ export async function GET(request: NextRequest) { if (url && binding.case === "redirect") { return NextResponse.redirect(url); } else if (url && binding.case === "post") { - const formData = { - relayState: binding.value.relayState, - samlResponse: binding.value.samlResponse, - }; - // Convert form data to URL-encoded string const formBody = new FormData(); - formBody.append("RelayState", formData.relayState); - formBody.append("SAMLResponse", formData.samlResponse); - console.log(url) - console.log(formBody) + formBody.append("RelayState", binding.value.relayState); + formBody.append("SAMLResponse", binding.value.samlResponse); + // Make a POST request to the external URL with the form data const response = await fetch(url, { method: "POST", @@ -495,7 +489,6 @@ export async function GET(request: NextRequest) { }, body: formBody, }); - console.log(response) // Handle the response from the external URL if (response.ok) { From 44d5b0637a081257b73cbe0033c8944452aa4a3f Mon Sep 17 00:00:00 2001 From: Stefan Benz <46600784+stebenz@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:04:51 +0100 Subject: [PATCH 6/8] fix: saml attributes for form post --- apps/login/src/app/login/route.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 0aba32e76e..40dfcdcd8b 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -476,17 +476,17 @@ export async function GET(request: NextRequest) { return NextResponse.redirect(url); } else if (url && binding.case === "post") { const formData = { - relayState: binding.value.relayState, - samlResponse: binding.value.samlResponse, + "RelayState": binding.value.relayState, + "SAMLResponse": binding.value.samlResponse, }; - // Convert form data to URL-encoded string - const formBody = new FormData(); + const formBody = Object.entries(formData) + .map( + ([key, value]) => + encodeURIComponent(key) + "=" + encodeURIComponent(value), + ) + .join("&"); - formBody.append("RelayState", formData.relayState); - formBody.append("SAMLResponse", formData.samlResponse); - console.log(url) - console.log(formBody) // Make a POST request to the external URL with the form data const response = await fetch(url, { method: "POST", @@ -495,7 +495,6 @@ export async function GET(request: NextRequest) { }, body: formBody, }); - console.log(response) // Handle the response from the external URL if (response.ok) { From 9bbbd965ed511e4588bf78951090409dd96e9c76 Mon Sep 17 00:00:00 2001 From: Stefan Benz <46600784+stebenz@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:08:14 +0100 Subject: [PATCH 7/8] fix: saml attributes for form post --- apps/login/src/app/login/route.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/login/src/app/login/route.ts b/apps/login/src/app/login/route.ts index 64623c15c6..be0427c023 100644 --- a/apps/login/src/app/login/route.ts +++ b/apps/login/src/app/login/route.ts @@ -477,17 +477,17 @@ export async function GET(request: NextRequest) { } else if (url && binding.case === "post") { // Create form data after SAML standard const formData = { - "RelayState": binding.value.relayState, - "SAMLResponse": binding.value.samlResponse, + RelayState: binding.value.relayState, + SAMLResponse: binding.value.samlResponse, }; // Convert form data to URL-encoded string const formBody = Object.entries(formData) - .map( - ([key, value]) => - encodeURIComponent(key) + "=" + encodeURIComponent(value), - ) - .join("&"); + .map( + ([key, value]) => + encodeURIComponent(key) + "=" + encodeURIComponent(value), + ) + .join("&"); // Make a POST request to the external URL with the form data const response = await fetch(url, { From 249d33385af8834d7b47e1fccb9b46bd468070f4 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Fri, 14 Mar 2025 10:40:45 +0100 Subject: [PATCH 8/8] chore: fix docker build pipeline --- .github/workflows/docker.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index db4d5aa5c8..773a82a846 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -57,6 +57,9 @@ jobs: - name: Install dependencies run: pnpm install + - name: Generate stubs + run: pnpm generate + - name: Build for Docker run: NEXT_PUBLIC_BASE_PATH=/ui/v2/login pnpm build:docker