few-wall-50136
09/15/2026, 11:18 AM"id": {
"type": "string",
"title": "ID",
"description": "Combination of provider and provider_id (provider:provider_id)",
"ory.sh/kratos": {
"credentials": {
"password": {
"identifier": true
}
}
}
},
"email": {
"type": "string",
"format": "email",
"title": "E-Mail",
"minLength": 3,
"maxLength": 320,
"ory.sh/kratos": {
"credentials": {
"webauthn": {
"identifier": true
},
"code": {
"identifier": true, // This guy is needed for verification, but breaks registration with same email
"via": "email"
}
}
}
},
"recovery_email": {
"type": "string",
"format": "email",
"title": "Reachable E-Mail",
"minLength": 3,
"maxLength": 320,
"ory.sh/kratos": {
"credentials": {
"password": {
"identifier": true
}
},
"verification": {
"via": "email"
},
"recovery": {
"via": "email"
}
}
},
With this (MFA) configuration, I cannot sign up anymore with same email.
• If I remove the identifiers from code and webauthn, I can register again with a same email, but on login and submitting code Kratos doesn't know to which of the two identities the code belongs to (I guess?) and upon submitting the code it fails with
{
"id": 4010008,
"text": "The login code is invalid or has already been used. Please try again.",
"type": "error"
}
• If I keep the identifiers, I cannot register with same email, but I this error is gone and email code MFA works fine.
The question is: How can email code 2FA live next to not using email as identifier for an identity? Any help is welcome.magnificent-energy-493
few-wall-50136
09/16/2026, 7:06 AMfew-wall-50136
09/16/2026, 8:57 AMidentifier: true on code → 2FA verification works, but blocks a second identity from claiming an already-used email (4000007).
- No identifier: true on code → registration with a duplicate email works, but 2FA code verification looks structurally impossible (4010008).few-wall-50136
09/18/2026, 7:04 AMmagnificent-energy-493
user+google-111@domain and user+google-222@domain - Ory treats these as 2 different unique email addresses but for many(most?) providers it will end up in the same inbox. plus it only really works if you generate the address yourself from provider:provider_id.
let me know what you thinkfew-wall-50136
09/18/2026, 12:21 PMfew-wall-50136
09/23/2026, 1:13 PM