Skip to content

Report the actual failure reason for attested invitation completion - #124

Merged
woksin merged 4 commits into
mainfrom
fix/attested-invitation-completion
Sep 9, 2026
Merged

Report the actual failure reason for attested invitation completion#124
woksin merged 4 commits into
mainfrom
fix/attested-invitation-completion

Conversation

@woksin

@woksin woksin commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Changed

Fixed

Meziantou.Analyzer 3.0.190's MA0219 requires a non-empty language
attribute on every <c>/<code> XML doc element. All 879 baseline
occurrences in this solution are inline <c> spans naming wire/claim
tokens, header names, paths, status codes and similar plain values
(no <code> blocks exist), so each gets language="text" - the same
choice already established for wire-token references. No comment
prose, executable code, or any other content changes.
Attested invitation completion collapsed every refusal into the generic
invalid-link page and derived the authentication scheme from
ClaimsIdentity.AuthenticationType, which carries a protocol artifact
rather than the configured cookie scheme. Callers could not tell an
unavailable provider address from a mismatched one, and canonical
identity failed to resolve for OIDC providers.

- Carry a bounded, value-free completion failure reason so a provider
  callback lands on the page that names its outcome, while every other
  guard keeps failing closed.
- Assert the cookie scheme the completion runs under on both the
  post-login and provider-callback paths instead of inferring it.
- Evaluate email_verified strictly when attestation is configured: only
  a single claim parsing to exactly true counts as verified. The legacy
  unsigned exchange keeps forwarding an absent claim as null.
- Document which mode applies on the error and well-known pages, and
  cover the callback paths with real OIDC round-trip specs.

Context: #118, #122. Builds on the XML doc language-attribute cleanup
in #123, whose commit is the parent of this one.
@woksin woksin added the patch label Sep 9, 2026
Resolve js-yaml 4.3.2 within the existing dependency range to address GHSA-2883-xcg3-v3hh. No manifest or dependency-range change is needed.
Attested completion now captures the invited recipient before authentication is awaited, so a configuration reload mid-completion cannot relax the verified-email requirement or switch the recipient being matched. Provider address matching goes through a static, strict verified-address check with no legacy unbound helper on the attested path, backed by a single auth-config snapshot and named failure factories. Duplicate-subject refusals are now logged consistently, and attested completion outcomes (unverified, missing, mismatched email) resolve to their own diagnostic pages instead of collapsing into a generic invalid-link result.

Refs #118, #122
@woksin
woksin merged commit ab7f277 into main Sep 9, 2026
12 checks passed
@woksin
woksin deleted the fix/attested-invitation-completion branch September 9, 2026 09:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant