Idea: Black-box IdP conformance tests for OpenTDF #3327
Replies: 3 comments
|
Like the idea. We will try to add a PoC to https://github.com/arkavo-org/opentdf-tests |
|
@eugenioenko FYI, similar conversations happening over here: https://github.com/virtru-corp/data-security-platform/pull/3423 |
|
Implemented and merged in arkavo-org/opentdf-tests#6: the black-box IdP conformance suite proposed here — 11 provider-agnostic checks (discovery, JWKS, client credentials, aud/iss, DPoP, ERS, negatives, TDF rewrap e2e), per-provider YAML configs, PR path-filtered + nightly strict triggers, Pages compatibility matrix — validated end-to-end against a live Auth0 tenant, which already surfaced a real finding (go SDK RS256 DPoP proof rejected by Auth0: arkavo-org/platform#2). |
Uh oh!
There was an error while loading. Please reload this page.
Motivation
Today CI and most integration tests stand up Keycloak via docker-compose. That gives us strong coverage of the Keycloak path, but the platform advertises generic OIDC support (plus Claims and Multi-Strategy ERS modes), and in practice users are pointing it at Okta, Auth0, Entra ID, Google, AWS Cognito, Ping, and others. Whenever a real integration breaks, we find out from a downstream issue rather than from CI.
I'd like to propose a black-box IdP conformance suite: a thin, provider-agnostic test pack that exercises the auth surface of the platform (token acquisition, JWKS/discovery, DPoP, claim shapes, audience handling, ERS resolution, KAS rewrap end-to-end) against any OIDC provider behind a config file.
Goals
Non-goals
Shape of the proposal
One suite, run against real tenants, in two triggers:
On PR, path-filtered. When a PR touches auth, ERS, or KAS code, run the suite against the real-provider matrix. Credentials come from GitHub Actions secrets. This means auth-touching PRs pay the slower feedback loop; everything else stays on the fast Keycloak path.
Scheduled, nightly or weekly. Run the full matrix against all providers regardless of what changed. Failures open an issue rather than blocking anything, because the failure mode is often "the provider changed something on their end" and we don't want to wedge main on that.
Initial matrix candidates: Okta (developer tier), Auth0 (free tier), Entra ID, AWS Cognito, Google. We can grow it as contributors donate tenants.
What the suite actually tests
Provider-agnostic checks, driven by a single config file per provider:
Each check is a pass/fail with a short reason, so the output doubles as a compatibility matrix we can publish.
Open questions
test/idp-conformance/providers/*.yamldirectory, or inline in the workflow?service/pkg/auth/**,service/entityresolution/**,service/kas/**, but there will be cross-cutting changes that don't match any of those.Why post this as a discussion first
The suite itself is a few days of work; the expensive part is agreeing on the shape (real providers only, path-filtered PR trigger, nightly full matrix) and working out the tenant ownership story before anyone writes it. Feedback welcome on whether this belongs in
service/integration, a new top-leveltest/idp-conformance, or a separate repo entirely.All reactions