Summary
AuthBridge's token-exchange today is RFC 8693 but carries Keycloak-specific assumptions. To support additional IdPs out of the box (Entra ID, Okta — tracked separately), Phase 1 is to nail down an IdP-agnostic plugin interface so each provider drops in as its own plugin via the existing registry, with no changes to the pipeline core.
Background
- Plugins self-register via
RegisterPlugin(name, factory) and implement pipeline.Plugin — authbridge/authlib/plugins/registry.go.
- The current outbound exchanger lives in
authbridge/authlib/plugins/tokenexchange/.
- Authoring contract:
authbridge/docs/plugin-reference.md, tutorial authbridge/docs/plugin-tutorial.md.
Goals
Non-goals
- Implementing Entra ID / Okta plugins (tracked in separate issues).
Notes
Collaborative design phase. Downstream config schema in kagenti/kagenti (charts/.../authbridge-template-configmaps.yaml, backend/.../test_authbridge_runtime_config.py) will need matching knobs once the interface is set.
Summary
AuthBridge's token-exchange today is RFC 8693 but carries Keycloak-specific assumptions. To support additional IdPs out of the box (Entra ID, Okta — tracked separately), Phase 1 is to nail down an IdP-agnostic plugin interface so each provider drops in as its own plugin via the existing registry, with no changes to the pipeline core.
Background
RegisterPlugin(name, factory)and implementpipeline.Plugin—authbridge/authlib/plugins/registry.go.authbridge/authlib/plugins/tokenexchange/.authbridge/docs/plugin-reference.md, tutorialauthbridge/docs/plugin-tutorial.md.Goals
tokenexchange/for Keycloak-specific assumptions (token endpoint discovery, grant/parameter shapes, claim mapping, audience handling, error semantics).SchemaProvider) can express per-IdP config without core changes; extend if not.Non-goals
Notes
Collaborative design phase. Downstream config schema in
kagenti/kagenti(charts/.../authbridge-template-configmaps.yaml,backend/.../test_authbridge_runtime_config.py) will need matching knobs once the interface is set.