diff --git a/main.sublime-project b/main.sublime-project index b0f6aaae..2640b5f7 100644 --- a/main.sublime-project +++ b/main.sublime-project @@ -37,6 +37,10 @@ "path": "packages/strategy-password", "folder_exclude_patterns": ["**/node_modules", "**/dist"] }, + { + "path": "packages/strategy-saml", + "folder_exclude_patterns": ["**/node_modules", "**/dist"] + }, { "path": "packages/tools", "folder_exclude_patterns": ["**/node_modules", "**/dist"] diff --git a/packages/strategy-saml/src/interface/SamlAuthority.tsx b/packages/strategy-saml/src/interface/SamlAuthority.tsx index 49059068..14daac0f 100644 --- a/packages/strategy-saml/src/interface/SamlAuthority.tsx +++ b/packages/strategy-saml/src/interface/SamlAuthority.tsx @@ -38,15 +38,16 @@ export function SamlAuthority({ } if ( - cookieMap.samlFinishedAuthorizationId && - cookieMap.samlFinishedAuthorizationSecret + cookieMap["strategy.saml.authorization_id"] && + cookieMap["strategy.saml.authorization_secret"] ) { setAuthorization({ - id: cookieMap.samlFinishedAuthorizationId, - secret: cookieMap.samlFinishedAuthorizationSecret, + id: cookieMap["strategy.saml.authorization_id"], + secret: cookieMap["strategy.saml.authorization_secret"], }); - window.document.cookie = "samlFinishedAuthorizationId="; - window.document.cookie = "samlFinishedAuthorizationSecret="; + window.document.cookie = "strategy.saml.authorization_id="; + window.document.cookie = "strategy.saml.authorization_secret="; + window.document.cookie = "strategy.saml.destination="; } const params = new URLSearchParams(window.location.search); @@ -62,6 +63,12 @@ export function SamlAuthority({ const [errors, setErrors] = useState([]); async function onSubmit(e: FormEvent): Promise { e.preventDefault(); + + // Save the current URL for internal redirection. + window.document.cookie = `strategy.saml.destination=${encodeURIComponent( + window.location.href + )}`; + window.location.href = authority.authUrlWithParams; } diff --git a/packages/strategy-saml/src/server/samlRouter.ts b/packages/strategy-saml/src/server/samlRouter.ts index 2103e8d4..a295f65b 100644 --- a/packages/strategy-saml/src/server/samlRouter.ts +++ b/packages/strategy-saml/src/server/samlRouter.ts @@ -46,19 +46,27 @@ export function samlRouterFactory(): Router { .join("&")}&authorityId=${encodeURIComponent(authorityId)}` ); } else { - console.log(data); - ctx.cookies.set( - "samlFinishedAuthorizationId", + "strategy.saml.authorization_id", data.data.authenticateSaml.id, { httpOnly: false } ); ctx.cookies.set( - "samlFinishedAuthorizationSecret", + "strategy.saml.authorization_secret", data.data.authenticateSaml.secret, { httpOnly: false } ); - ctx.redirect(`${base}?authorityId=${encodeURIComponent(authorityId)}`); + + const destination = decodeURIComponent( + ctx.cookies.get("strategy.saml.destination", { + signed: false, + }) ?? "" + ); + + ctx.redirect( + destination || + `${base}?authorityId=${encodeURIComponent(authorityId)}` + ); } } );