You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for RFC 7523 (JWT Bearer Client Assertion) as a cross-IdP federation mechanism, enabling agents with Keycloak-issued tokens to obtain tokens from external IdPs (Entra ID, Okta) without credential duplication.
Problem
Today, AuthBridge's token exchange operates within a single IdP: agents authenticate to Keycloak and exchange tokens for Keycloak-protected services. When an agent needs to call APIs protected by a different IdP (Microsoft Graph via Entra, Salesforce via Okta), there is no mechanism to exchange a Keycloak token for an external IdP token.
The RFC 7523 Flow
Agent (has Keycloak JWT)
→ AuthBridge intercepts outbound call to graph.microsoft.com
→ Route matches: provider=entra, credential=federated
→ POST to login.microsoftonline.com/{tenant}/oauth2/v2.0/token
grant_type=client_credentials
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion=<keycloak-jwt>
scope=https://graph.microsoft.com/.default
→ Entra validates Keycloak JWT against Federated Identity Credential config
→ Returns Entra access token
→ AuthBridge attaches Entra token to outbound request
The agent code never knows Entra/Okta exists. AuthBridge handles the cross-IdP exchange transparently.
Prerequisites on the external IdP side
Entra ID (config-only, no code)
Create a Federated Identity Credential on the Agent Identity pointing to Keycloak's OIDC issuer
Subject claim matches the agent's Keycloak client ID (namespace/workload)
Okta (config-only, no code)
Configure a Custom Authorization Server with a Token Exchange policy
The RFC 7523 flow is the same for both Entra and Okta — a standard client_credentials grant with client_assertion_type=jwt-bearer and the Keycloak JWT as the assertion.
A generic RFC 7523 implementation covers both IdPs (and Auth0, Ping, ForgeRock, etc.) rather than building separate plugins per IdP.
Summary
Add support for RFC 7523 (JWT Bearer Client Assertion) as a cross-IdP federation mechanism, enabling agents with Keycloak-issued tokens to obtain tokens from external IdPs (Entra ID, Okta) without credential duplication.
Problem
Today, AuthBridge's token exchange operates within a single IdP: agents authenticate to Keycloak and exchange tokens for Keycloak-protected services. When an agent needs to call APIs protected by a different IdP (Microsoft Graph via Entra, Salesforce via Okta), there is no mechanism to exchange a Keycloak token for an external IdP token.
The RFC 7523 Flow
The agent code never knows Entra/Okta exists. AuthBridge handles the cross-IdP exchange transparently.
Prerequisites on the external IdP side
Entra ID (config-only, no code)
namespace/workload)Okta (config-only, no code)
What this enables
The "three-IdP enterprise" routing table:
Implementation notes
client_credentialsgrant withclient_assertion_type=jwt-bearerand the Keycloak JWT as the assertion.IdPProviderinterface (feat(authbridge): make token-exchange plugin interface IDP-agnostic #481) with acredential: federatedconcept, or it may be a new credential type alongsideclient-secretandspiffe.Relationship to existing issues
IdPProvidercontract. RFC 7523 federated exchange is the next layer — a cross-IdP flow that uses the interface.References
Assisted-By: Claude (Anthropic AI) noreply@anthropic.com