Skip to content

Why Zekt Gate

Your developers already have an identity. Zekt should accept it.

Zekt authorizes through GitHub. Your enterprise authorizes through Microsoft Entra ID. Zekt Gate is the piece that lets the second one speak to the first — without either side giving up the identity model it already relies on.

Microsoft Entra ID and GitHub on either side of zekt-gate, which joins them.
Entra ID on one side, GitHub on the other. Zekt Gate is the trusted join between them.

The short version

One paragraph, then the detail

Your developer portal signs a developer in with their corporate account and calls Zekt on their behalf. Zekt, however, expects a GitHub identity, because that is what its automation path has always used. Zekt Gate sits at that seam: it accepts the Entra token your portal already holds, proves the token is genuine, works out which Zekt customer the token belongs to, and hands Zekt a request it can trust. Your developers never need a GitHub identity to make that call, and Zekt never has to stop being GitHub-native.

Where the problem starts

Nothing is broken, and it still does not work

The gap is not a missing API. Zekt already has APIs. The gap is that nothing at the edge can say who is calling in terms your enterprise recognises.

  1. The automation path works

    A developer pushes code, a GitHub Actions workflow runs, and zekt-action calls Zekt. The GitHub identity establishes who the caller is, and Zekt authorizes on that basis. This path is not the problem and does not change.

  2. The portal path has nowhere to stand

    A developer opens Backstage, signs in with their corporate account, and asks for infrastructure. Backstage holds an Entra token. Zekt expects a GitHub identity. There is nothing in between that can turn the first into a request Zekt will trust.

  3. The usual workarounds are worse

    Associating a personal GitHub account with a corporate developer, or wiring a shared service account into the portal, both produce calls Zekt will accept and nobody can attribute. A credential that stands in for an enterprise is not an enterprise identity boundary.

  4. So the request never gets made

    In practice the portal integration stalls, or it ships with an exception written into a risk register. Neither outcome is the platform team getting what it wanted, which was to offer Zekt services from the place developers already work.

What it does

Four things, in order, on every call

Zekt Gate is deliberately thin. It is an ingress and trust layer, not a second platform, and what follows is very close to the whole of its job.

  1. Prove the token is real

    The signature is checked against the issuing tenant, the issuer is checked against the expected Entra issuer, the audience is checked against the Zekt Gate API, and the lifetime is checked against the clock. Decoding a token is not validating it, and Gate never treats the two as the same thing.

  2. Work out whose call it is

    The tenant claim in the validated token decides which enrolled Zekt customer this is — never a field in the URL or the request body. That single rule is what stops one customer reaching another by editing a request.

  3. Decide whether it is allowed

    A valid token is not permission to do everything. Delegated user scopes and application roles are evaluated separately, the requested operation is checked against your policy, and anything uncertain fails closed rather than open.

  4. Hand Zekt a request it can trust

    The call is metered for usage attribution, stamped with the caller, the application and the correlation context, and forwarded to the existing Zekt Directory, Registry or Orchestrator API. The result comes back unchanged.

What it is not

The list matters as much as the last one

A component that sits at your identity boundary earns trust partly by being small. These are commitments about scope, not features postponed to a later release.

  • Not an identity provider

    Gate issues no identity and holds no credentials of yours. Entra remains the authority on who your people are; Gate only reads what Entra signed.

  • Not a directory management tool

    Enrollment validates tokens rather than requesting broad access to your tenant. Gate does not ask for permission to manage your Entra environment, and cannot.

  • Not a second Zekt

    The Directory, the Registry, the Orchestrator, service contracts and version semantics all stay in Zekt. Gate implements none of them and is not a place where they could drift.

  • Not a general API gateway

    Gate translates enterprise identity into Zekt request context, for Zekt requests. It is not an API management product and is not intended to front anything else.

  • Not a second billing system

    Metering happens at the call so that usage is attributable where it occurs, then feeds the billing model Zekt already has. There is no separate invoice to reconcile.

  • Not tied to Backstage

    Backstage is the clearest example, not a dependency. Anything that can obtain an Entra access token for the Gate API is a client on the same terms.

Why it is separate

A boundary cannot live inside the thing it protects

Every other Zekt add-on ships inside Zekt Core and is switched on from within it. Zekt Gate is a separate product, deployed apart and licensed on its own. That is a design decision, and these are the reasons.

  • The check and the checked stay on opposite sides

    Gate stands between your identity provider and Zekt. If it shared Zekt Core’s runtime, the component doing the validating and the component being protected would sit in the same trust context.

  • A failure at the edge stays at the edge

    Enterprise ingress is the exposed surface. Keeping it decoupled means a compromise there does not widen into orchestration or into provider workflows.

  • Zekt stays GitHub-native for everyone else

    Customers who do not need enterprise identity are not asked to absorb it. The core product keeps the model that suits its automation path, and this stays a premium capability for those who need it.

Is this you?

Who needs Zekt Gate

Zekt Gate assumes you are already a Zekt customer. It changes how requests reach Zekt, not what Zekt does once they arrive.

You probably need it

  • Your developers reach internal tooling through a portal such as Backstage
  • That portal authenticates people with Microsoft Entra ID
  • You want Zekt services offered from inside it
  • Your security review asks who made a call, from which application, on whose behalf
  • Personal or shared GitHub accounts standing in for corporate identity is not something you can sign off

You probably do not

  • Your teams consume Zekt entirely from GitHub Actions through zekt-action
  • GitHub is already your organisation’s identity model
  • No enterprise application needs to call Zekt on a person’s behalf
  • You are evaluating Zekt itself and have not adopted it yet

What changes

Afterwards, the sentence you want to be able to say

Our enterprise identity is now a trusted way of consuming Zekt.

A developer signs into your portal with their corporate account and asks for a service. The portal presents its Entra token. Zekt Gate validates it, resolves your customer context, checks the permission and forwards the request. Zekt discovers, orchestrates and correlates exactly as it does for every other client, and the usage lands against the right customer. From Zekt’s side, nothing exotic happened: another trusted client entered the service model.

Start enrollment

Enrollment runs through Zekt Core, which is where your Zekt account already lives.