Write down what single sign-on's e-mail matching trusts #62
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Reference
Postulo/postulo#62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What the settings do today
Somebody arriving through the configured identity provider is linked to, and signed in as,
the existing local account holding that e-mail address.
This is not a defect, and the audit checked. allauth only matches addresses the
provider marked as verified:
So an unverified claim links to nothing.
What is worth writing down anyway
The whole security of the arrangement now rests on one property of the operator's chosen
provider: that
email_verified: truemeans the person actually proved they hold theaddress. That is true of a well-run Keycloak, Authentik or Pocket ID. It is not
automatically true of every OIDC endpoint somebody might configure, and a provider that
lets a user set their own address and marks it verified turns "sign in with SSO" into
"sign in as anyone whose address you know".
POSTULO_OIDC_AUTO_SIGNUPis off by default, which stops a stranger creating an account —but linking to an account that already exists is a different door, and it is open by
default.
accounts/social_adapter.pydocuments what it does about usernames and signup policy andsays nothing about this, which is the gap.
Shape
provider, and the one question an operator must be able to answer about their own
provider before turning single sign-on on.
where somebody is when the decision is being made.
POSTULO_OIDC_LINK_BY_EMAIL,default on to preserve today's behaviour, off to require the person to sign in locally
once and connect the provider deliberately.
Classification
Documentation, security. Not a vulnerability; not breaking.
Depends on
Nothing. It should land before anything that lets single sign-on stand in for a second
factor, because it establishes what that trust rests on.