To review SSO account binding, follow the login from the selected SaaS account to its exact identity-provider connection, then to a stable provider subject and a current membership in that same account. Validate the OIDC or SAML response first; only then resolve the person. Email address and domain can help route a sign-in, but they should not create or merge membership by themselves. OpenID Connect identifies a user by the combination of iss and sub, rather than email alone, in its claim stability rules.
The answer changes when the application intentionally supports several SSO connections, account switching, or just-in-time provisioning. Each option needs an explicit rule for which connection is allowed to create or access which account. A technically valid assertion from a trusted provider is still wrong for a different tenant or login transaction. A successful IdP login proves authentication under that IdP's policy; it does not by itself authorize repository access, findings, billing changes or administrator rights in the SaaS app.
Illustrative case: the same mailbox in two customers
Illustrative companies, identities and identifiers. Northstar and Orchard both use the SaaS app. Northstar's contractor, Sam, has sam@example.test in its directory. Orchard later invites the same mailbox to work on a separate project. Northstar uses an OIDC connection, while Orchard uses a different IdP and SAML. The application permits Sam to belong to both accounts, but the two memberships have different scopes.
A shortcut implementation searches for a local user by email after any SSO callback, chooses the account name from a browser parameter, and issues a session. That would let an assertion from Orchard's IdP bind to Northstar's membership if the rest of the code trusts the email match. It could also reattach a removed membership after a later invitation or email reassignment. The safe review asks which provider binding and stable subject are authorized for the selected account, whether an active membership exists, and whether any provisioning action was separately approved. The example is a review scenario, not a claim that a live exploit occurred.
| Object | Northstar example | What must be checked |
|---|---|---|
| Login intent | northstar, OIDC, transaction L-17 |
Was this account and method selected before redirect? Is the intent unexpired and one-use? |
| Connection | Northstar OIDC connection C-N |
Does the returned issuer, audience and signing key match this exact connection? |
| Provider person | (iss=https://idp.northstar.test, sub=7812) |
Does this stable tuple map to the intended local identity? |
| Membership | M-N-204, active in Northstar |
Is it current, and which group and resource rights does it actually have? |
| Session | Bound to Northstar and M-N-204 |
Can a client parameter or account switch change the tenant without fresh checks? |
The email may be displayed and verified for contact purposes. It is absent from the authority column. OpenID Connect Core defines sub as locally unique within the issuer and explicitly identifies iss plus sub as the stable pair. For SAML, inspect the IdP's documented identifier policy: an email-format or transient NameID should not be assumed non-reassignable merely because the string looks familiar.
Check the protocol before binding a person
For OIDC, start from the configured connection and inspect the callback implementation or IdP library behavior. Confirm the exact issuer, trusted signature and key, intended client audience, expiration, transaction-bound state, nonce where applicable, authorization-code flow and PKCE. Check how it rejects an authorization response from the wrong issuer when several IdPs share a callback. OIDC Core's ID Token validation specifies issuer, audience, signature and nonce checks; OAuth 2.0 Security BCP addresses code-injection and mix-up defenses, exact redirect matching and PKCE.
For SAML, inspect the configured entity ID and signing certificate, the signed element actually consumed, issuer, audience, recipient, validity window and request/response binding. Check replay handling and XML signature-wrapping defenses. The OWASP SAML Security Cheat Sheet lists these checks. A parser finding an apparently valid signature somewhere in a response is insufficient if application code later consumes a different, unsigned assertion.
Protocol validation is necessary but not the entire account-binding decision. After it passes, the application still needs a connection-specific, stable subject binding and a current account membership. Conversely, finding a known email in a valid assertion is not a substitute for validating the assertion.
Reject a valid assertion for the wrong login intent
Continue the synthetic Northstar/Orchard example with a server-created login transaction:
L-17: account=Northstar, connection=C-N, protocol=OIDC
expected_issuer=https://idp.northstar.test
expected_client=client-N, one_use=true, expires=10:10
The callback arrives with a valid assertion for Orchard's configured connection and the same mailbox. Protocol validity is not enough: the response does not match L-17's expected connection and account. Do not search all trusted providers for one that can validate it and then attach its email to Northstar. Reject the mismatched transaction before creating an application session.
The accepted path is explicit:
load and validate one-use login intent bound to the initiating browser
validate response against intent's exact connection and protocol
resolve provider-qualified stable subject under that connection
load current membership in intent.account
apply allowed provisioning policy only if separately authorized
issue session with the resulting account/identity binding
This is architectural pseudocode. Actual OIDC validation includes the required issuer, audience, signature, expiry and transaction protections; SAML has its own signed-element and request-binding rules. Use the maintained protocol implementation and check its configuration rather than writing a new validator from this outline. OIDC Core and RFC9700 supply the protocol requirements.
Bind the login intent to the initiating browser using the protocol library's transaction protections; a secret-looking state value stored only in a global lookup is not by itself proof that the callback belongs to this browser. Consume successful login intent once and reject expired or mismatched callbacks.
An IdP migration is an identity change request
Northstar later replaces its provider. Sam's mailbox is unchanged, but the subject tuple changes:
| Binding | Connection and subject | Membership disposition |
|---|---|---|
| Old | C-N / old issuer / sub=7812 |
Existing M-N-204, currently active |
| New candidate | C-N2 / new issuer / sub=9901 |
Unlinked until approved migration |
| Removed former member | C-N / old issuer / sub=4410 |
Must remain removed despite matching new email |
An approved migration record maps the verified old and new identities, names the authorizers, states which memberships and grants survive, and defines when the old connection stops accepting logins. It does not infer that every matching email is the same person or that every historical membership should become active.
For Sam, the migration can preserve M-N-204 after the trusted identity comparison and approval. For the removed member, the new binding must not revive the old grant. If identity equivalence cannot be established, hold linking and use the approved recovery process. A temporary login problem is preferable to silently transferring another person's rights.
The acceptance outcomes are a successful Northstar login through the approved new binding, denial through an unapproved connection, denial for replayed/expired intent, and no reactivation of removed membership. All are expected synthetic cases here, not observed tests. A complete review also checks alternate native login and recovery after SSO enforcement; those can bypass an otherwise correct callback if they create the same privileged session through a weaker route.
When the identity key changes or evidence is missing
An IdP migration, domain transfer or changed pairwise subject can break a legitimate login. Do not “repair” it by silently attaching the new assertion to the old email record. Pause the link, obtain an approved identity-migration procedure, verify both the old and new provider identities through trusted administrators, and record who authorized the change. If a SAML IdP cannot provide a suitably persistent identifier, treat federation support as unresolved for that connection rather than promoting an email to a durable principal.
Likewise, do not infer phishing-resistant MFA or recent authentication from a generic amr/acr value whose upstream meaning and policy are unknown. The security engineer needs evidence from the exact qualified IdP configuration, not a string that happens to say “mfa.” Missing assurance should restrict privileged operations while ordinary membership decisions remain separately evaluated.
Review connection administration as an authority change
The callback can validate its configured connection perfectly while the configuration itself was changed by an unauthorized operator. Include the administrative path that creates, edits, enables, and retires SSO connections in the account-binding review. The relevant question is who may designate an identity provider as authoritative for Northstar, and what evidence supports that change.
For the synthetic migration, C-N2 should not become trusted merely because a browser request submits its issuer URL. A current authorized account administrator or another explicitly designated process must approve the connection under the product's policy. The review should inspect whether that administrator can alter only Northstar's connection and whether a change affects existing sessions, new logins, or both.
Keep the old and new connection identities distinct during transition. If both are temporarily accepted, record which subjects and memberships each may establish and the date or condition that ends the overlap. An overlap can support continuity, but it should not quietly allow the retired directory to provision new administrators indefinitely.
Distinguish linking identities from granting memberships
Sam may legitimately have separate provider identities for Northstar and Orchard. The application can represent them as two identities or connect them through an approved linking design. Either choice must preserve the account-specific authority of each provider. Linking them for convenience should not mean that Orchard's authentication policy now satisfies Northstar's privileged-login requirement.
A useful review question is what happens when Sam opens a Northstar resource from an Orchard-authenticated session. The application may need a Northstar-qualified sign-in or step-up before access, even if it recognizes the same human. The final decision still uses current Northstar membership and the resource's owner. An email match or a global user record cannot supply the missing connection-specific assurance.
Record linking and membership changes separately in the migration evidence. A trusted mapping from old subject to new subject can preserve identity continuity. Whether M-N-204 remains active, which role it has, and whether a new connection can recreate a removed membership are additional policy decisions. Keeping those operations separate prevents a successful identity migration from becoming an accidental privilege migration.
Inspect the first protected response after login
A callback success page is not the end of the account-binding trace. Follow the newly issued session to one Northstar resource and one wrong-account request. The server should use the resulting verified identity and current membership, not a stale browser account parameter copied before redirect.
If authentication succeeds but membership is absent, the application can present an appropriate enrollment or access-request state without returning private account data. If a connection mismatch is rejected, ensure no usable session was issued before the error. These expected cases make the binding review concrete while keeping protocol validity, identity continuity, and account permission as separate conclusions.
For the next review, build the five-row binding table above for one real SSO connection and follow one successful and one wrong-account callback to their final decision. Then use why an email domain is not account membership and how to review authentication and session security for SaaS for the neighboring authorization checks.