diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index c53e362fe..adf9489d4 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -18,6 +18,7 @@ import { TExternalKmsServiceFactory } from "@app/ee/services/external-kms/extern import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; import { TGithubOrgSyncServiceFactory } from "@app/ee/services/github-org-sync/github-org-sync-service"; import { TGroupServiceFactory } from "@app/ee/services/group/group-service"; +import { TIdentityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template"; import { TIdentityProjectAdditionalPrivilegeServiceFactory } from "@app/ee/services/identity-project-additional-privilege/identity-project-additional-privilege-service"; import { TIdentityProjectAdditionalPrivilegeV2ServiceFactory } from "@app/ee/services/identity-project-additional-privilege-v2/identity-project-additional-privilege-v2-service"; import { TKmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; @@ -66,7 +67,6 @@ import { THsmServiceFactory } from "@app/services/hsm/hsm-service"; import { TIdentityServiceFactory } from "@app/services/identity/identity-service"; import { TIdentityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; import { TIdentityAliCloudAuthServiceFactory } from "@app/services/identity-alicloud-auth/identity-alicloud-auth-service"; -import { TIdentityAuthTemplateServiceFactory } from "@app/services/identity-auth-template"; import { TIdentityAwsAuthServiceFactory } from "@app/services/identity-aws-auth/identity-aws-auth-service"; import { TIdentityAzureAuthServiceFactory } from "@app/services/identity-azure-auth/identity-azure-auth-service"; import { TIdentityGcpAuthServiceFactory } from "@app/services/identity-gcp-auth/identity-gcp-auth-service"; diff --git a/backend/src/server/routes/v1/identity-template-router.ts b/backend/src/ee/routes/v1/identity-template-router.ts similarity index 99% rename from backend/src/server/routes/v1/identity-template-router.ts rename to backend/src/ee/routes/v1/identity-template-router.ts index 3f14d0208..b30069643 100644 --- a/backend/src/server/routes/v1/identity-template-router.ts +++ b/backend/src/ee/routes/v1/identity-template-router.ts @@ -2,14 +2,14 @@ import { z } from "zod"; import { IdentityAuthTemplatesSchema } from "@app/db/schemas/identity-auth-templates"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; -import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; -import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; -import { AuthMode } from "@app/services/auth/auth-type"; import { IdentityAuthTemplateMethod, TEMPLATE_SUCCESS_MESSAGES, TEMPLATE_VALIDATION_MESSAGES -} from "@app/services/identity-auth-template/identity-auth-template-enums"; +} from "@app/ee/services/identity-auth-template/identity-auth-template-enums"; +import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; const ldapTemplateFieldsSchema = z.object({ url: z.string().min(1, TEMPLATE_VALIDATION_MESSAGES.LDAP.URL_REQUIRED), diff --git a/backend/src/ee/routes/v1/index.ts b/backend/src/ee/routes/v1/index.ts index 8f3b69dfa..ab9503f58 100644 --- a/backend/src/ee/routes/v1/index.ts +++ b/backend/src/ee/routes/v1/index.ts @@ -13,6 +13,7 @@ import { registerGatewayRouter } from "./gateway-router"; import { registerGithubOrgSyncRouter } from "./github-org-sync-router"; import { registerGroupRouter } from "./group-router"; import { registerIdentityProjectAdditionalPrivilegeRouter } from "./identity-project-additional-privilege-router"; +import { registerIdentityTemplateRouter } from "./identity-template-router"; import { registerKmipRouter } from "./kmip-router"; import { registerKmipSpecRouter } from "./kmip-spec-router"; import { registerLdapRouter } from "./ldap-router"; @@ -125,6 +126,7 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => { await server.register(registerExternalKmsRouter, { prefix: "/external-kms" }); + await server.register(registerIdentityTemplateRouter, { prefix: "/identity-templates" }); await server.register(registerProjectTemplateRouter, { prefix: "/project-templates" }); diff --git a/backend/src/services/identity-auth-template/identity-auth-template-dal.ts b/backend/src/ee/services/identity-auth-template/identity-auth-template-dal.ts similarity index 100% rename from backend/src/services/identity-auth-template/identity-auth-template-dal.ts rename to backend/src/ee/services/identity-auth-template/identity-auth-template-dal.ts diff --git a/backend/src/services/identity-auth-template/identity-auth-template-enums.ts b/backend/src/ee/services/identity-auth-template/identity-auth-template-enums.ts similarity index 100% rename from backend/src/services/identity-auth-template/identity-auth-template-enums.ts rename to backend/src/ee/services/identity-auth-template/identity-auth-template-enums.ts diff --git a/backend/src/services/identity-auth-template/identity-auth-template-service.ts b/backend/src/ee/services/identity-auth-template/identity-auth-template-service.ts similarity index 98% rename from backend/src/services/identity-auth-template/identity-auth-template-service.ts rename to backend/src/ee/services/identity-auth-template/identity-auth-template-service.ts index 5fcd2614d..ef071742d 100644 --- a/backend/src/services/identity-auth-template/identity-auth-template-service.ts +++ b/backend/src/ee/services/identity-auth-template/identity-auth-template-service.ts @@ -9,11 +9,11 @@ import { import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { BadRequestError, NotFoundError } from "@app/lib/errors"; import { TOrgPermission } from "@app/lib/types"; +import { ActorType } from "@app/services/auth/auth-type"; +import { TIdentityLdapAuthDALFactory } from "@app/services/identity-ldap-auth/identity-ldap-auth-dal"; +import { TKmsServiceFactory } from "@app/services/kms/kms-service"; +import { KmsDataKey } from "@app/services/kms/kms-types"; -import { ActorType } from "../auth/auth-type"; -import { TIdentityLdapAuthDALFactory } from "../identity-ldap-auth/identity-ldap-auth-dal"; -import { TKmsServiceFactory } from "../kms/kms-service"; -import { KmsDataKey } from "../kms/kms-types"; import { TIdentityAuthTemplateDALFactory } from "./identity-auth-template-dal"; import { IdentityAuthTemplateMethod } from "./identity-auth-template-enums"; import { diff --git a/backend/src/services/identity-auth-template/identity-auth-template-types.ts b/backend/src/ee/services/identity-auth-template/identity-auth-template-types.ts similarity index 100% rename from backend/src/services/identity-auth-template/identity-auth-template-types.ts rename to backend/src/ee/services/identity-auth-template/identity-auth-template-types.ts diff --git a/backend/src/services/identity-auth-template/index.ts b/backend/src/ee/services/identity-auth-template/index.ts similarity index 100% rename from backend/src/services/identity-auth-template/index.ts rename to backend/src/ee/services/identity-auth-template/index.ts diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index bf5d0d1b3..5dabdac6b 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -179,8 +179,8 @@ import { identityAccessTokenDALFactory } from "@app/services/identity-access-tok import { identityAccessTokenServiceFactory } from "@app/services/identity-access-token/identity-access-token-service"; import { identityAliCloudAuthDALFactory } from "@app/services/identity-alicloud-auth/identity-alicloud-auth-dal"; import { identityAliCloudAuthServiceFactory } from "@app/services/identity-alicloud-auth/identity-alicloud-auth-service"; -import { identityAuthTemplateDALFactory } from "@app/services/identity-auth-template/identity-auth-template-dal"; -import { identityAuthTemplateServiceFactory } from "@app/services/identity-auth-template/identity-auth-template-service"; +import { identityAuthTemplateDALFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-dal"; +import { identityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-service"; import { identityAwsAuthDALFactory } from "@app/services/identity-aws-auth/identity-aws-auth-dal"; import { identityAwsAuthServiceFactory } from "@app/services/identity-aws-auth/identity-aws-auth-service"; import { identityAzureAuthDALFactory } from "@app/services/identity-azure-auth/identity-azure-auth-dal"; diff --git a/backend/src/server/routes/v1/index.ts b/backend/src/server/routes/v1/index.ts index c28d2788e..458efd194 100644 --- a/backend/src/server/routes/v1/index.ts +++ b/backend/src/server/routes/v1/index.ts @@ -26,7 +26,6 @@ import { registerIdentityLdapAuthRouter } from "./identity-ldap-auth-router"; import { registerIdentityOciAuthRouter } from "./identity-oci-auth-router"; import { registerIdentityOidcAuthRouter } from "./identity-oidc-auth-router"; import { registerIdentityRouter } from "./identity-router"; -import { registerIdentityTemplateRouter } from "./identity-template-router"; import { registerIdentityTlsCertAuthRouter } from "./identity-tls-cert-auth-router"; import { registerIdentityTokenAuthRouter } from "./identity-token-auth-router"; import { registerIdentityUaRouter } from "./identity-universal-auth-router"; @@ -136,7 +135,6 @@ export const registerV1Routes = async (server: FastifyZodProvider) => { await server.register(registerIntegrationAuthRouter, { prefix: "/integration-auth" }); await server.register(registerWebhookRouter, { prefix: "/webhooks" }); await server.register(registerIdentityRouter, { prefix: "/identities" }); - await server.register(registerIdentityTemplateRouter, { prefix: "/identity-templates" }); await server.register( async (secretSharingRouter) => { diff --git a/backend/src/services/identity-ldap-auth/identity-ldap-auth-service.ts b/backend/src/services/identity-ldap-auth/identity-ldap-auth-service.ts index 3d2fe1b54..f38f53cf0 100644 --- a/backend/src/services/identity-ldap-auth/identity-ldap-auth-service.ts +++ b/backend/src/services/identity-ldap-auth/identity-ldap-auth-service.ts @@ -2,6 +2,7 @@ import { ForbiddenError } from "@casl/ability"; import { IdentityAuthMethod } from "@app/db/schemas"; +import { TIdentityAuthTemplateDALFactory } from "@app/ee/services/identity-auth-template"; import { testLDAPConfig } from "@app/ee/services/ldap-config/ldap-fns"; import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; import { @@ -24,7 +25,6 @@ import { TIdentityDALFactory } from "../identity/identity-dal"; import { TIdentityOrgDALFactory } from "../identity/identity-org-dal"; import { TIdentityAccessTokenDALFactory } from "../identity-access-token/identity-access-token-dal"; import { TIdentityAccessTokenJwtPayload } from "../identity-access-token/identity-access-token-types"; -import { TIdentityAuthTemplateDALFactory } from "../identity-auth-template"; import { TKmsServiceFactory } from "../kms/kms-service"; import { KmsDataKey } from "../kms/kms-types"; import { validateIdentityUpdateForSuperAdminPrivileges } from "../super-admin/super-admin-fns"; diff --git a/docs/documentation/platform/identities/auth-templates.mdx b/docs/documentation/platform/identities/auth-templates.mdx index ca857bc26..5c389376f 100644 --- a/docs/documentation/platform/identities/auth-templates.mdx +++ b/docs/documentation/platform/identities/auth-templates.mdx @@ -51,8 +51,6 @@ Auth templates are managed in **Organization Settings > Access Control > Identit - **Bind DN**: The DN to bind to the LDAP server with. - **Bind Pass**: The password to bind to the LDAP server with. - **Search Base / DN**: Base DN under which to perform user search such as `ou=Users,dc=acme,dc=com`. - - **User Search Filter**: Template used to construct the LDAP user search filter such as `(uid={{username}})`; use literal `{{username}}` to have the given username used in the search. The default is `(uid={{username}})` which is compatible with several common directory schemas. - - **Required Attributes**: A key/value pair of attributes that must be present in the LDAP user entry for them to be authenticated. As an example, if you set key `uid` to value `user1,user2,user3`, then only users with `uid` of `user1`, `user2`, or `user3` will be able to login with this identity. Each value is a comma separated list of attributes. - **CA Certificate**: The CA certificate to use when verifying the LDAP server certificate. This field is optional but recommended. diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx index e17de9575..909391474 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx @@ -1,4 +1,5 @@ import { faCertificate } from "@fortawesome/free-solid-svg-icons"; +import { useNavigate } from "@tanstack/react-router"; import { EmptyState, @@ -30,6 +31,7 @@ export const MachineAuthTemplateUsagesModal = ({ templateName }: Props) => { const { currentOrg } = useOrganization(); + const navigate = useNavigate(); const organizationId = currentOrg?.id || ""; @@ -57,6 +59,14 @@ export const MachineAuthTemplateUsagesModal = ({ + navigate({ + to: "/organization/identities/$identityId", + params: { + identityId: usage.identityId + } + }) + } > {usage.identityName}