From bfaf87c4c2bd8db1a3ff84aee1b488e151a8b49e Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Wed, 10 Jan 2024 23:27:15 +0530 Subject: [PATCH] feat(infisical-pg): completed saml integration --- backend-pg/package-lock.json | 10 ++++++++++ backend-pg/package.json | 1 + .../src/db/migrations/20240107153439_saml-config.ts | 2 +- backend-pg/src/ee/routes/v1/saml-router.ts | 11 +++++------ backend-pg/src/server/app.ts | 2 ++ backend-pg/src/services/secret/secret-queue.ts | 1 - 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/backend-pg/package-lock.json b/backend-pg/package-lock.json index f2adb35ee..bf11e6c89 100644 --- a/backend-pg/package-lock.json +++ b/backend-pg/package-lock.json @@ -13,6 +13,7 @@ "@casl/ability": "^6.5.0", "@fastify/cookie": "^9.2.0", "@fastify/cors": "^8.4.1", + "@fastify/formbody": "^7.4.0", "@fastify/helmet": "^11.1.1", "@fastify/passport": "^2.4.0", "@fastify/rate-limit": "^9.0.0", @@ -1205,6 +1206,15 @@ "fastify-plugin": "^4.0.0" } }, + "node_modules/@fastify/formbody": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.4.0.tgz", + "integrity": "sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==", + "dependencies": { + "fast-querystring": "^1.0.0", + "fastify-plugin": "^4.0.0" + } + }, "node_modules/@fastify/helmet": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/@fastify/helmet/-/helmet-11.1.1.tgz", diff --git a/backend-pg/package.json b/backend-pg/package.json index 09cd5f4b0..66a9a498f 100644 --- a/backend-pg/package.json +++ b/backend-pg/package.json @@ -69,6 +69,7 @@ "@casl/ability": "^6.5.0", "@fastify/cookie": "^9.2.0", "@fastify/cors": "^8.4.1", + "@fastify/formbody": "^7.4.0", "@fastify/helmet": "^11.1.1", "@fastify/passport": "^2.4.0", "@fastify/rate-limit": "^9.0.0", diff --git a/backend-pg/src/db/migrations/20240107153439_saml-config.ts b/backend-pg/src/db/migrations/20240107153439_saml-config.ts index f38bdca07..76070dc68 100644 --- a/backend-pg/src/db/migrations/20240107153439_saml-config.ts +++ b/backend-pg/src/db/migrations/20240107153439_saml-config.ts @@ -15,7 +15,7 @@ export async function up(knex: Knex): Promise { t.string("encryptedIssuer"); t.string("issuerTag"); t.string("issuerIV"); - t.string("encryptedCert"); + t.text("encryptedCert"); t.string("certIV"); t.string("certTag"); t.timestamps(true, true, true); diff --git a/backend-pg/src/ee/routes/v1/saml-router.ts b/backend-pg/src/ee/routes/v1/saml-router.ts index e33308167..b74bc2081 100644 --- a/backend-pg/src/ee/routes/v1/saml-router.ts +++ b/backend-pg/src/ee/routes/v1/saml-router.ts @@ -1,6 +1,7 @@ import { Authenticator } from "@fastify/passport"; import fastifySession from "@fastify/session"; import { MultiSamlStrategy } from "@node-saml/passport-saml"; +import { FastifyRequest } from "fastify"; import { z } from "zod"; import { SamlConfigsSchema } from "@app/db/schemas"; @@ -55,13 +56,11 @@ export const registerSamlRouter = async (server: FastifyZodProvider) => { samlConfig.audience = `spn:${ssoConfig.issuer}`; } } - req.ssoConfig = ssoConfig; + (req as unknown as FastifyRequest).ssoConfig = ssoConfig; done(null, samlConfig); } }, async (req, profile, cb) => { - console.log(req.ssoConfig); - console.log(profile); try { const serverCfg = server.services.superAdmin.getServerCfg(); if (!profile) throw new BadRequestError({ message: "Missing profile" }); @@ -75,8 +74,8 @@ export const registerSamlRouter = async (server: FastifyZodProvider) => { lastName: profile.lastName as string, isSignupAllowed: Boolean(serverCfg.allowSignUp), relayState: (req.body as { RelayState?: string }).RelayState, - authProvider: req.ssoConfig.authProvider, - orgId: req.ssoConfig.orgId + authProvider: (req as unknown as FastifyRequest).ssoConfig?.authProvider as string, + orgId: (req as unknown as FastifyRequest).ssoConfig?.orgId as string }); cb(null, { isUserCompleted, providerAuthToken }); } catch (error) { @@ -115,7 +114,7 @@ export const registerSamlRouter = async (server: FastifyZodProvider) => { server.route({ url: "/saml2/:ssoIdentifier", - method: "GET", + method: "POST", schema: { params: z.object({ ssoIdentifier: z.string().trim() diff --git a/backend-pg/src/server/app.ts b/backend-pg/src/server/app.ts index 7b1842a63..489c32dee 100644 --- a/backend-pg/src/server/app.ts +++ b/backend-pg/src/server/app.ts @@ -2,6 +2,7 @@ import type { FastifyCookieOptions } from "@fastify/cookie"; import cookie from "@fastify/cookie"; import type { FastifyCorsOptions } from "@fastify/cors"; import cors from "@fastify/cors"; +import fastifyFormBody from "@fastify/formbody"; import helmet from "@fastify/helmet"; import type { FastifyRateLimitOptions } from "@fastify/rate-limit"; import ratelimiter from "@fastify/rate-limit"; @@ -51,6 +52,7 @@ export const main = async ({ db, smtp, logger, queue }: TMain) => { await server.register(fastifyIp); await server.register(fastifySwagger); + await server.register(fastifyFormBody); // Rate limiters and security headers await server.register(ratelimiter, globalRateLimiterCfg); diff --git a/backend-pg/src/services/secret/secret-queue.ts b/backend-pg/src/services/secret/secret-queue.ts index 06ba0c3fb..2c651c92b 100644 --- a/backend-pg/src/services/secret/secret-queue.ts +++ b/backend-pg/src/services/secret/secret-queue.ts @@ -113,7 +113,6 @@ export const secretQueueFactory = ({ } }); }); - console.log(secrets.filter(({ type }) => type === "personal")); secrets.forEach((secret) => { const secretKey = decryptSymmetric128BitHexKeyUTF8({ ciphertext: secret.secretKeyCiphertext,