diff --git a/backend/src/server/routes/v1/identity-aws-iam-auth-router.ts b/backend/src/server/routes/v1/identity-aws-iam-auth-router.ts index 575a6aafd..0ea31f9e6 100644 --- a/backend/src/server/routes/v1/identity-aws-iam-auth-router.ts +++ b/backend/src/server/routes/v1/identity-aws-iam-auth-router.ts @@ -100,6 +100,7 @@ export const registerIdentityAwsAuthRouter = async (server: FastifyZodProvider) .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -108,6 +109,7 @@ export const registerIdentityAwsAuthRouter = async (server: FastifyZodProvider) accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) @@ -182,11 +184,12 @@ export const registerIdentityAwsAuthRouter = async (server: FastifyZodProvider) .min(1) .optional() .describe(AWS_AUTH.UPDATE.accessTokenTrustedIps), - accessTokenTTL: z.number().int().min(0).optional().describe(AWS_AUTH.UPDATE.accessTokenTTL), + accessTokenTTL: z.number().int().min(0).max(31536000).optional().describe(AWS_AUTH.UPDATE.accessTokenTTL), accessTokenNumUsesLimit: z.number().int().min(0).optional().describe(AWS_AUTH.UPDATE.accessTokenNumUsesLimit), accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) diff --git a/backend/src/server/routes/v1/identity-azure-auth-router.ts b/backend/src/server/routes/v1/identity-azure-auth-router.ts index dbde2d9a7..c99fe2fd1 100644 --- a/backend/src/server/routes/v1/identity-azure-auth-router.ts +++ b/backend/src/server/routes/v1/identity-azure-auth-router.ts @@ -90,6 +90,7 @@ export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -98,6 +99,7 @@ export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) @@ -173,11 +175,12 @@ export const registerIdentityAzureAuthRouter = async (server: FastifyZodProvider .min(1) .optional() .describe(AZURE_AUTH.UPDATE.accessTokenTrustedIps), - accessTokenTTL: z.number().int().min(0).optional().describe(AZURE_AUTH.UPDATE.accessTokenTTL), + accessTokenTTL: z.number().int().min(0).max(31536000).optional().describe(AZURE_AUTH.UPDATE.accessTokenTTL), accessTokenNumUsesLimit: z.number().int().min(0).optional().describe(AZURE_AUTH.UPDATE.accessTokenNumUsesLimit), accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) diff --git a/backend/src/server/routes/v1/identity-gcp-auth-router.ts b/backend/src/server/routes/v1/identity-gcp-auth-router.ts index 6f10ba9f5..7efe9f8ff 100644 --- a/backend/src/server/routes/v1/identity-gcp-auth-router.ts +++ b/backend/src/server/routes/v1/identity-gcp-auth-router.ts @@ -91,6 +91,7 @@ export const registerIdentityGcpAuthRouter = async (server: FastifyZodProvider) .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -99,6 +100,7 @@ export const registerIdentityGcpAuthRouter = async (server: FastifyZodProvider) accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) @@ -175,11 +177,12 @@ export const registerIdentityGcpAuthRouter = async (server: FastifyZodProvider) .min(1) .optional() .describe(GCP_AUTH.UPDATE.accessTokenTrustedIps), - accessTokenTTL: z.number().int().min(0).optional().describe(GCP_AUTH.UPDATE.accessTokenTTL), + accessTokenTTL: z.number().int().min(0).max(31536000).optional().describe(GCP_AUTH.UPDATE.accessTokenTTL), accessTokenNumUsesLimit: z.number().int().min(0).optional().describe(GCP_AUTH.UPDATE.accessTokenNumUsesLimit), accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) diff --git a/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts b/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts index d69f028a1..41efbb766 100644 --- a/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts +++ b/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts @@ -106,6 +106,7 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -114,6 +115,7 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) @@ -196,7 +198,13 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide .min(1) .optional() .describe(KUBERNETES_AUTH.UPDATE.accessTokenTrustedIps), - accessTokenTTL: z.number().int().min(0).optional().describe(KUBERNETES_AUTH.UPDATE.accessTokenTTL), + accessTokenTTL: z + .number() + .int() + .min(0) + .max(31536000) + .optional() + .describe(KUBERNETES_AUTH.UPDATE.accessTokenTTL), accessTokenNumUsesLimit: z .number() .int() @@ -206,6 +214,7 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) diff --git a/backend/src/server/routes/v1/identity-oidc-auth-router.ts b/backend/src/server/routes/v1/identity-oidc-auth-router.ts index 417947ad7..7d2d7879e 100644 --- a/backend/src/server/routes/v1/identity-oidc-auth-router.ts +++ b/backend/src/server/routes/v1/identity-oidc-auth-router.ts @@ -106,6 +106,7 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider) .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -114,6 +115,7 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider) accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) @@ -201,6 +203,7 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider) .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -209,6 +212,7 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider) accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) diff --git a/backend/src/server/routes/v1/identity-token-auth-router.ts b/backend/src/server/routes/v1/identity-token-auth-router.ts index 752447538..0a8779829 100644 --- a/backend/src/server/routes/v1/identity-token-auth-router.ts +++ b/backend/src/server/routes/v1/identity-token-auth-router.ts @@ -39,6 +39,7 @@ export const registerIdentityTokenAuthRouter = async (server: FastifyZodProvider .number() .int() .min(1) + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenTTL must have a non zero number" }) @@ -47,6 +48,7 @@ export const registerIdentityTokenAuthRouter = async (server: FastifyZodProvider accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) @@ -117,11 +119,12 @@ export const registerIdentityTokenAuthRouter = async (server: FastifyZodProvider .min(1) .optional() .describe(TOKEN_AUTH.UPDATE.accessTokenTrustedIps), - accessTokenTTL: z.number().int().min(0).optional().describe(TOKEN_AUTH.UPDATE.accessTokenTTL), + accessTokenTTL: z.number().int().min(0).max(31536000).optional().describe(TOKEN_AUTH.UPDATE.accessTokenTTL), accessTokenNumUsesLimit: z.number().int().min(0).optional().describe(TOKEN_AUTH.UPDATE.accessTokenNumUsesLimit), accessTokenMaxTTL: z .number() .int() + .max(31536000) .refine((value) => value !== 0, { message: "accessTokenMaxTTL must have a non zero number" }) diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAwsAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAwsAuthForm.tsx index 9c81f308a..956fa5eea 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAwsAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAwsAuthForm.tsx @@ -22,8 +22,22 @@ const schema = yup stsEndpoint: yup.string(), allowedPrincipalArns: yup.string(), allowedAccountIds: yup.string(), - accessTokenTTL: yup.string().required("Access Token TTL is required"), - accessTokenMaxTTL: yup.string().required("Access Max Token TTL is required"), + accessTokenTTL: yup + .string() + .required("Access Token TTL is required") + .test( + "is-value-valid", + "Access Token TTL cannot be greater than 31536000", + (value) => Number(value) <= 31536000 + ), + accessTokenMaxTTL: yup + .string() + .required("Access Max Token TTL is required") + .test( + "is-value-valid", + "Access Token Max TTL cannot be greater than 31536000", + (value) => Number(value) <= 31536000 + ), accessTokenNumUsesLimit: yup.string().required("Access Token Max Number of Uses is required"), accessTokenTrustedIps: yup .array( diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx index c0aaca2f6..53cce8136 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityAzureAuthForm.tsx @@ -22,8 +22,12 @@ const schema = z tenantId: z.string(), resource: z.string(), allowedServicePrincipalIds: z.string(), - accessTokenTTL: z.string(), - accessTokenMaxTTL: z.string(), + accessTokenTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token TTL cannot be greater than 31536000" + }), + accessTokenMaxTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token Max TTL cannot be greater than 31536000" + }), accessTokenNumUsesLimit: z.string(), accessTokenTrustedIps: z .array( diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpAuthForm.tsx index eb07c3c36..8e1accd14 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityGcpAuthForm.tsx @@ -23,8 +23,12 @@ const schema = z allowedServiceAccounts: z.string(), allowedProjects: z.string(), allowedZones: z.string(), - accessTokenTTL: z.string(), - accessTokenMaxTTL: z.string(), + accessTokenTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token TTL cannot be greater than 31536000" + }), + accessTokenMaxTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token Max TTL cannot be greater than 31536000" + }), accessTokenNumUsesLimit: z.string(), accessTokenTrustedIps: z .array( diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx index 6baa6a405..4ad8f6bfa 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx @@ -25,8 +25,12 @@ const schema = z allowedNamespaces: z.string(), allowedAudience: z.string(), caCert: z.string(), - accessTokenTTL: z.string(), - accessTokenMaxTTL: z.string(), + accessTokenTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token TTL cannot be greater than 31536000" + }), + accessTokenMaxTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token Max TTL cannot be greater than 31536000" + }), accessTokenNumUsesLimit: z.string(), accessTokenTrustedIps: z .array( diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityOidcAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityOidcAuthForm.tsx index 763d2f22a..9bc26774d 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityOidcAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityOidcAuthForm.tsx @@ -22,8 +22,12 @@ const schema = z.object({ }) ) .min(1), - accessTokenTTL: z.string(), - accessTokenMaxTTL: z.string(), + accessTokenTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token TTL cannot be greater than 31536000" + }), + accessTokenMaxTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token Max TTL cannot be greater than 31536000" + }), accessTokenNumUsesLimit: z.string(), oidcDiscoveryUrl: z.string().url().min(1), caCert: z.string().trim().default(""), diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTokenAuthForm.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTokenAuthForm.tsx index b28af537f..710e64111 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTokenAuthForm.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityTokenAuthForm.tsx @@ -17,8 +17,12 @@ import { UsePopUpState } from "@app/hooks/usePopUp"; const schema = z .object({ - accessTokenTTL: z.string(), - accessTokenMaxTTL: z.string(), + accessTokenTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token TTL cannot be greater than 31536000" + }), + accessTokenMaxTTL: z.string().refine((val) => Number(val) <= 31536000, { + message: "Access Token Max TTL cannot be greater than 31536000" + }), accessTokenNumUsesLimit: z.string(), accessTokenTrustedIps: z .array(