I'm currently experimenting with OpenZiti, with the goal of securing my SaaS application for future use. My setup involves a controller in Kubernetes, a separate VM running Browzer, and integration with Authentik as my identity provider (IdP). The entire purpose of this setup is to explore Zero Trust access for my clients.
Problem Summary
During my experimentation, I've run into a significant hurdle related to identity creation. My current configuration requires me to manually create an OpenZiti identity for each new user or client before they can log in via Authentik. This manual process is not a feasible solution for a real-world, scalable deployment.
The current workflow is:
-
A user successfully authenticates through Authentik.
-
However, their access is blocked because a corresponding OpenZiti identity does not yet exist.
-
I have to manually create the identity in OpenZiti to allow the user to proceed.
This manual step is a bottleneck and prevents me from achieving the seamless, automated user onboarding experience that's crucial for my future plans.
Goal
I'm looking for a way to automate the identity creation process. My goal is to have OpenZiti dynamically provision an identity for a user the very first time they log in via Authentik. This "Just-in-Time" (JIT) provisioning would eliminate the need for any manual intervention on my part.
Technical Details
I've already integrated Authentik as an external identity provider using OpenID Connect (OIDC). My research suggests that OpenZiti has a feature for external JWT signers and a concept of third-party auto-enrolled identities, which seems to be the solution I'm looking for.
I believe the correct path forward involves:
-
Configuring an external JWT signer in OpenZiti that trusts Authentik.
-
Creating or modifying an authentication policy to allow primary authentication via this external signer.
-
Leveraging a claim from the JWT (e.g., email or a custom attribute) to automatically create a corresponding OpenZiti identity with appropriate attributes.
I'm looking for guidance or a detailed example of how to implement this "Just-in-Time" (JIT) identity provisioning. I want to avoid the manual pre-provisioning step and have OpenZiti dynamically create identities based on successful authentication from Authentik.
Is there a standard or recommended way to achieve this dynamic identity creation with OpenZiti and a custom OIDC provider like Authentik? Are there specific configuration settings or CLI commands I'm missing to enable this functionality?
Thank you for your help!