Skip to main content

Identity integration patterns

Who can PolicyArc identify, and where does each identity come from? It holds no passwords. People come from an identity provider you connect, agents and services are OAuth clients, and workloads can prove themselves with SPIFFE. A person can also connect other accounts that the managed gateway uses for them. This page names each pattern, what the server stores for it and the page that sets it up.

How it works​

PatternIdentity policy seesWhat the server storesSet it up
People sign in through your workforce identity providerA subject, with the provider's sub, the provider key and the claims read at sign-inThe provider's registration, with its client secret encrypted. A row per person in subject and subject_userinfo.Trust and identity, then a provider page such as Microsoft Entra ID
Agents and services are clientsA client, with its client ID and how it registeredA row in client, with a BCrypt hash of its secret if it has oneAgent identity
Workloads prove themselves with SPIFFEA client the server creates for each SPIFFE ID the first time it sees oneA row in client. The trust bundle URL is a control data row.Authenticate workloads with SPIFFE
One person connects other accountsThe same subject. The gateway uses the other account only for that person's calls.The other provider's tokens, encrypted, one row per person and provider. Or a credential the person typed in, encrypted, one row per person and resource.Connecting multiple accounts

Policy picks the provider for each sign-in, from the control data row pbac.operator.controls.idp_selection. You can connect several providers and route people by the resource they ask for or the assurance level they need.

Why it works this way​

Every party is checked by a protocol the server already speaks, OpenID Connect for people, OAuth client authentication for software and JWT-SVIDs for workloads. So every identity reaches policy in the same shape, a subject, a client or both, and one rule can read them all. The cost is that identity is tied to the provider that vouched for it. A person who signs in through two providers is two subjects, and policy treats them as two people. Another account connected through the gateway does not have this cost, because it is stored under the subject the person signed in as.

What this means for you​

  • Pick one provider for each person's sign-in. If people must use two, write policy that names both subjects.
  • Register each agent as its own client, so policy and the audit log can tell agents apart.
  • Treat the identity provider's client secret and each person's upstream tokens as secrets. The server encrypts them with PBAC_CREDENTIAL_KEY, see Data handling.

We ran the integration tests for identity claims, reconnect links, typed-in credentials, forwarding a person's provider token and SPIFFE against a new test instance with one server replica on version 0.65.0, with a mock identity provider. All 30 passed in each of three runs. We did not connect a real workforce provider for this page.