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