Skip to content

fix(auth): enforce trusted external identity attributes before provisioning #629

Description

@XiaoSeS

Parent

#628

What to build

Harden the existing OAuth/OIDC login path so access and profile updates use only provider attributes with sufficient assurance, and so non-interactive or non-active platform accounts are rejected before external profile data is written.

Acceptance criteria

  • An unverified email cannot satisfy EMAIL_DOMAIN access policy.
  • An unverified email is not persisted for a new account and does not overwrite an existing trusted email.
  • GitHub email assurance comes from the authenticated emails endpoint; a profile fallback remains unverified.
  • Existing PENDING, DISABLED, and MERGED bindings fail with stable login outcomes.
  • System accounts cannot obtain an interactive OAuth session.
  • Account-state rejection happens before profile updates or role loading.
  • GitHub, GitLab, OIDC, access-policy, binding, and login-handler regression tests pass on Java 21.
  • The change is integrated into big-main and validated before any merge to main.

Blocked by

None - can start immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingeffort/l大改动或高风险改动,需要 maintainer 负责 / Large or risky change requiring maintainer ownership.priority/p1高优先级 / High priority triage bucket.risk/high涉及安全、鉴权、迁移或公共契约 / Touches security, auth, migrations, or public contracts.triage/needs-info需要补充更多信息后才能分流 / Issue needs more detail before it can be routed.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions