Skip to content

feat: support custom IDP origin in CF UAA password grant#206

Open
Sim-Jar wants to merge 2 commits intoSAP:mainfrom
dxfrontier:feat/custom-idp-origin-upstream
Open

feat: support custom IDP origin in CF UAA password grant#206
Sim-Jar wants to merge 2 commits intoSAP:mainfrom
dxfrontier:feat/custom-idp-origin-upstream

Conversation

@Sim-Jar
Copy link

@Sim-Jar Sim-Jar commented Feb 17, 2026

Summary

Adds support for custom identity provider (IDP) authentication in the CF UAA password grant flow.

The go-cfclient/v3 library already supports config.Origin() to pass the login_hint parameter to the CF UAA token endpoint, but the provider never used it. This prevents authentication when a custom IDP is configured (e.g., SAP Identity Authentication Service with a non-default origin).

Changes (2 lines of logic):

  • Add optional Origin field to CfCredentials struct (json:"origin,omitempty")
  • Pass config.Origin(cred.Origin) when the field is non-empty

Fully backwards compatible — omitting the origin field preserves existing behavior.

Credentials JSON

{"email":"user@example.com","password":"...","origin":"custom-idp-origin"}

Closes #204

Test plan

  • Verified go build ./internal/clients/ compiles successfully
  • Deployed and tested on a live cluster with SAP IAS as custom IDP (origin arrevqqkn-platform)
  • Organization, OrgMembers, Space, SpaceMembers, ServiceInstance, App, Route all reconcile successfully with custom IDP origin
  • Verified backwards compatibility: omitting origin field works identically to current behavior

The go-cfclient/v3 library already supports config.Origin() to pass the
login_hint parameter to the CF UAA token endpoint, but the provider never
used it. This prevents authentication when a custom identity provider is
configured (e.g., SAP IAS with a non-default origin).

This commit adds an optional "origin" field to the credentials JSON and
passes it via config.Origin() when set. The change is fully backwards
compatible — omitting the origin field preserves existing behavior.

Credentials JSON with origin:
  {"email":"...","password":"...","origin":"custom-idp-origin"}

Signed-off-by: Simon Jarke <simon.jarke@abs-gmbh.de>
@cla-assistant
Copy link

cla-assistant bot commented Feb 17, 2026

CLA assistant check
All committers have signed the CLA.

BREAKING CHANGE: All 16 CRDs (14 managed resources + ProviderConfig +
ProviderConfigUsage) are now namespace-scoped instead of cluster-scoped.
Existing cluster-scoped CRs must be recreated as namespaced resources.

- Upgrade crossplane-runtime to v2.1.0, controller-runtime to v0.22.0
- Update all import paths to crossplane-runtime/v2
- Use ManagedResourceSpec (v2) replacing ResourceSpec (v1)
- Use NamespacedReference/NamespacedSelector for cross-resource refs
- Use TypedProviderConfigUsage with Kind field
- Use ModernManaged interface for ProviderConfig lookup with namespace
- Remove External Secret Store (ESS) support (removed in v2)
- Remove Management Policies feature flag (always enabled in v2)
- Remove StoreConfig CRD and apis/v1alpha1 package
- Regenerate all CRDs, deepcopy, managed, and resolver code
- Add namespace to example YAMLs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ProviderConfig does not support custom IDP origin for UAA password grant

1 participant

Comments