OpenID / FAPI conformance (PROD-12)¶
Certification is an external process run against the OpenID Foundation's conformance suite. This document captures what to run and the readiness state so the certification can be kicked off; the formal mark is awarded by the OpenID Foundation, not by this repository.
What we certify¶
| Profile | Helix capability | Status |
|---|---|---|
| OpenID Connect — Basic / Config / Dynamic | authorization_code, discovery, dynamic client registration | implemented |
| OIDC RP-initiated Logout / Back-channel / Front-channel | /connect/logout, logout tokens, SLO |
implemented |
| FAPI 2.0 Security Profile | mTLS-bound tokens (RFC 8705), PAR (RFC 9126), iss in response |
implemented |
| FAPI — Request Object / JARM | signed request objects (RFC 9101), JWT-secured response mode | implemented |
| OAuth 2.0 DPoP | sender-constrained tokens (RFC 9449) | implemented |
| CIBA | backchannel authentication (pairs with device push) | implemented |
Running the conformance suite¶
- Deploy a dedicated conformance realm (isolated; throwaway clients).
- Use the hosted suite at https://www.certification.openid.net/ (or self-host
openid-certification/conformance-suitevia its docker-compose). - Configure the test plan with the realm's discovery URL:
https://<host>/realms/<realm>/.well-known/openid-configuration. - Provide a confidential test client (and, for FAPI, an mTLS client cert + a signing key for request objects). Register them via the admin API / console.
- Run the plan, export the results, and submit them with the certification form + fee.
Inspect what the issuer advertises¶
The discovery document is the ground truth the conformance suite reads. It is anonymous — no session or token — so you can inspect any realm's advertised capabilities directly. See Authenticating to the API for $HELIX_URL / $REALM.
curl -s "$HELIX_URL/realms/$REALM/.well-known/openid-configuration" | jq '{
grant_types_supported,
response_types_supported,
code_challenge_methods_supported,
token_endpoint_auth_methods_supported,
tls_client_certificate_bound_access_tokens,
dpop_signing_alg_values_supported,
pushed_authorization_request_endpoint
}'
{
"grant_types_supported": [
"authorization_code",
"client_credentials",
"refresh_token",
"urn:ietf:params:oauth:grant-type:device_code",
"urn:ietf:params:oauth:grant-type:token-exchange"
],
"response_types_supported": ["code"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": [
"client_secret_basic", "client_secret_post", "client_secret_jwt",
"private_key_jwt", "tls_client_auth", "self_signed_tls_client_auth"
],
"tls_client_certificate_bound_access_tokens": true,
"dpop_signing_alg_values_supported": [
"RS256", "RS384", "RS512", "PS256", "PS384", "PS512",
"ES256", "ES384", "ES512"
],
"pushed_authorization_request_endpoint": "http://localhost:8083/realms/master/oauth2/par"
}
These live values map straight onto the certified profiles: token-exchange and device_code grants, S256-only PKCE, FAPI's private_key_jwt / tls_client_auth and tls_client_certificate_bound_access_tokens: true (RFC 8705), DPoP signing algorithms (RFC 9449), and the PAR endpoint (RFC 9126). Point the conformance test plan at the same URL.
Readiness checklist¶
- [x] Discovery document advertises the supported grant types, response modes, PKCE methods, and the
tls_client_certificate_bound_access_tokens/ DPoP / PAR metadata. - [x] JWKS endpoint serves per-realm signing keys; rotation supported.
- [x] FAPI client policies enforce PAR + mTLS/
private_key_jwtfor high-assurance clients. - [ ] Conformance realm + test clients provisioned in the target environment (per-run).
- [ ] Test plan executed and results exported (per-run).
- [ ] Certification submitted to the OpenID Foundation (external; fee + review).
The implementation is conformance-ready; the remaining items are operational (provision + run + submit).