Skip to main content
Promotional banner ad for the Penetration Testing Report Kit
Your Team Passed Conformance but Broke in ProductionOAuth & OIDC
6 min readFor IAM Architects

Your Team Passed Conformance but Broke in Production

Your OAuth implementation passed the conformance tests, and the certification badge went on the website. Three weeks later, session handling broke for mobile clients because someone misunderstood token refresh semantics.

This pattern repeats across organizations implementing OpenID Connect, FAPI, and other federation standards. The conformance suite checks if your code can execute the protocol correctly, but it doesn't catch architectural decisions that lead to production failures. The OpenID Foundation recently introduced a Guided mode in its conformance suite to help first-time implementers through the testing process. However, even guided validation can't prevent fundamental mistakes when teams treat conformance as a checklist rather than a learning tool.

Why These Mistakes Keep Happening

Conformance testing often feels like a binary outcome: pass or fail. This mindset leads teams to focus on passing tests rather than understanding the security properties those tests validate. The test suite might confirm your authorization code flow handles redirects correctly, but it doesn't explain why the state parameter prevents CSRF attacks or what happens when session management conflicts with token lifetime policies.

The problem worsens when teams split implementation work between backend developers who understand OAuth flows and frontend developers who handle session state. No one owns the end-to-end security model. The conformance tests pass because each component works, but the integration creates gaps.

Mistake 1: Treating Test Plans as Implementation Specs

Why it happens: Teams new to OpenID standards often reverse-engineer their implementation from the test cases, building exactly what the conformance suite validates.

The consequence: Your implementation handles the happy path and specific error conditions the tests check, but fails with edge cases the test suite doesn't cover. For example, a team might implement the Authorization Code Flow and pass all tests, but never consider what happens when a user abandons the login flow halfway through. Their authorization server accumulates stale authorization codes, and their application doesn't handle the "authorization pending" state well.

The fix: Read the specification first, such as RFC 6749 for OAuth 2.0 or OpenID Connect Core 1.0. The conformance suite checks if you understood the spec correctly; it's not a substitute for reading it. When you encounter a test failure, don't just fix the code to pass the test. Trace back to the specification section that test validates and understand the security property it protects.

Mistake 2: Ignoring the Certification Process Until the End

Why it happens: Teams build their entire implementation, then run it through conformance testing as a final step. This seems efficient but front-loads all the learning into the testing phase.

The consequence: You discover fundamental architectural problems after building the system. A team implementing FAPI might build their entire authorization server before realizing their session management conflicts with the requirement for sender-constrained tokens. Now they're rewriting core components under deadline pressure.

The fix: Run conformance tests incrementally as you build each component. Start with basic OpenID Connect authentication before adding token refresh. Validate your Authorization Code Flow before implementing Proof Key for Code Exchange. Each test failure becomes a learning moment when you have time to understand it, not a crisis when you're trying to ship.

Mistake 3: Configuring Tests Without Understanding the Ecosystem Context

Why it happens: The conformance suite offers multiple test plans because different ecosystems have different security requirements. Teams pick test plans based on what sounds easiest or what they think they need, without understanding the threat model each plan addresses.

The consequence: You certify against the wrong profile for your use case. A team building a mobile banking application might test against basic OpenID Connect when they should be validating FAPI compliance. Their implementation passes conformance but doesn't meet the security requirements their regulators expect. Or they over-engineer by testing against FAPI when their internal employee portal doesn't need that level of protection.

The fix: Map your threat model to the test plan before you start. If you're handling financial transactions, FAPI isn't optional. If you're federating with external identity providers in a healthcare context, OpenID for Identity Assurance matters. If you're building an internal tool with a single identity provider, basic OpenID Connect might be sufficient. The new Guided mode in the conformance suite helps with this by asking about your ecosystem and role, but you still need to understand what those choices mean for your security posture.

Mistake 4: Assuming Conformance Equals Security

Why it happens: Conformance testing validates protocol correctness, and teams conflate that with security validation. The badge says "certified," so the implementation must be secure.

The consequence: Your OAuth flows work correctly, but your session management has a 24-hour timeout that violates your organization's access policies. Your token validation is perfect, but you're logging refresh tokens in plaintext. Your Authorization Code Flow implementation passes all tests, but you're not enforcing PKCE for mobile clients because the basic OpenID Connect profile doesn't require it.

The fix: Treat conformance as a foundation, not a ceiling. After you pass the relevant test plans, audit your implementation against your organization's security requirements. Do your token lifetimes align with your access policies? Are you enforcing phishing-resistant authentication where your risk assessment requires it? Does your implementation of Just-in-Time Provisioning create accounts with appropriate Birthright Access? The conformance suite validates that you speak the protocol correctly; your security team validates that you're saying the right things.

Mistake 5: Testing in Isolation From Your Integration Points

Why it happens: The conformance suite tests your authorization server or relying party in isolation. Teams validate their implementation against the test suite but never test how it integrates with their actual identity providers, session brokers, or downstream applications.

The consequence: Your authorization server passes FAPI conformance, but when you integrate it with your legacy Active Directory environment, the User Principal Name format conflicts with your token claims structure. Your relying party implementation works perfectly with the test suite's mock authorization server, but fails when connecting to your actual identity provider because of subtle differences in how they handle Back-Channel Communication.

The fix: After passing conformance tests, run integration tests against your real infrastructure. If you're building a relying party, test against your production authorization server in a staging environment. If you're building an authorization server, test with the actual client applications that will consume your tokens. Pay special attention to Federation Metadata exchange, token claim mapping, and session lifecycle management across the integration boundary.

Prevention Checklist

Before you start your next OpenID implementation:

  • Read the relevant specification completely before writing code
  • Map your threat model to the appropriate conformance test plan
  • Set up conformance testing in your CI/CD pipeline, not as a final gate
  • Document which security properties each test validates, not just pass/fail status
  • Define token lifetime, session timeout, and rotation policies based on your risk assessment
  • Plan integration testing with your actual identity infrastructure
  • Review your implementation against your organization's access policies after passing conformance
  • Train both your backend and frontend teams on the end-to-end security model
  • Establish a process for staying current with specification updates and new test plans

The conformance suite validates that you can execute the protocol. Your job is to understand why the protocol works that way and whether your implementation serves your actual security requirements. The badge proves you can speak the language. The architecture proves you know what to say.

Promotional banner graphic asking if you are ready for PCI DSS 4.0 with a call-to-action to get the guide

You Might Also Like