From 837324a0159fc4abea0883fa07ca7471f1543a34 Mon Sep 17 00:00:00 2001 From: Darcy Ye Date: Fri, 10 Jan 2025 16:12:23 +0800 Subject: [PATCH] feat(core): add SAML app audit logs (#6931) --- packages/console/src/consts/logs.ts | 2 + .../src/saml-applications/routes/anonymous.ts | 45 +++++++++++++++++++ packages/schemas/src/types/log/index.ts | 6 ++- packages/schemas/src/types/log/saml.ts | 10 +++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 packages/schemas/src/types/log/saml.ts diff --git a/packages/console/src/consts/logs.ts b/packages/console/src/consts/logs.ts index ecb7937a7..57e289190 100644 --- a/packages/console/src/consts/logs.ts +++ b/packages/console/src/consts/logs.ts @@ -108,6 +108,8 @@ export const auditLogEventTitle: Record> & { 'Create IdP-initiated SAML SSO authentication session', 'JwtCustomizer.AccessToken': 'Get custom user access token claims', 'JwtCustomizer.ClientCredential': 'Get custom M2M access token claims', + 'SamlApplication.AuthnRequest': 'Receive SAML application authentication request', + 'SamlApplication.Callback': 'Handle SAML application callback', }); export const logEventTitle: Record> & { diff --git a/packages/core/src/saml-applications/routes/anonymous.ts b/packages/core/src/saml-applications/routes/anonymous.ts index 71a7e1a6b..9c0c33745 100644 --- a/packages/core/src/saml-applications/routes/anonymous.ts +++ b/packages/core/src/saml-applications/routes/anonymous.ts @@ -6,6 +6,7 @@ import { z } from 'zod'; import { spInitiatedSamlSsoSessionCookieName } from '#src/constants/index.js'; import RequestError from '#src/errors/RequestError/index.js'; +import koaAuditLog from '#src/middleware/koa-audit-log.js'; import koaGuard from '#src/middleware/koa-guard.js'; import type { AnonymousRouter, RouterInitArgs } from '#src/routes/types.js'; import assertThat from '#src/utils/assert-that.js'; @@ -62,12 +63,20 @@ export default function samlApplicationAnonymousRoutes { const { params: { id }, query, } = ctx.guard; + const log = ctx.createLog('SamlApplication.Callback'); + + log.append({ + query, + samlApplicationId: id, + }); + // Handle error in query parameters if ('error' in query) { throw new RequestError({ @@ -94,6 +103,11 @@ export default function samlApplicationAnonymousRoutes { const { params: { id }, query: { Signature, RelayState, ...rest }, } = ctx.guard; + const log = ctx.createLog('SamlApplication.AuthnRequest'); + log.append({ + query: ctx.guard.query, + samlApplicationId: id, + }); + const details = await getSamlApplicationDetailsById(id); const samlApplication = new SamlApplication(details, id, envSet.oidc.issuer, tenantId); @@ -142,6 +163,7 @@ export default function samlApplicationAnonymousRoutes { const { params: { id }, body: { SAMLRequest, RelayState }, } = ctx.guard; + const log = ctx.createLog('SamlApplication.AuthnRequest'); + log.append({ + body: ctx.guard.body, + samlApplicationId: id, + }); + const details = await getSamlApplicationDetailsById(id); const samlApplication = new SamlApplication(details, id, envSet.oidc.issuer, tenantId); @@ -226,6 +263,7 @@ export default function samlApplicationAnonymousRoutes