pub struct Login {
pub label: String,
pub start: String,
pub door: Door,
pub finish: Option<String>,
pub next: Option<String>,
pub enrol: Option<Enrolment>,
}Expand description
The door a browser can actually walk through, if there is one.
Fields§
§label: StringWhat the button says. The server’s word, not the page’s.
start: StringWhere the button goes. A same-site rooted path; the page refuses anything else, so a misconfigured server cannot turn the button into an open redirect.
For Door::Here this is the ceremony’s START path, fetched rather
than navigated to.
door: DoorWhich of the two doors this is. Defaulted, so an older document still reads.
finish: Option<String>Door::Here only: where the signed assertion is POSTed. None for a
link, and the page treats a Here with no finish as a link, because
a ceremony with nowhere to finish is not a ceremony.
next: Option<String>Door::Here only: where the browser goes once the session cookie is
set. A same-site rooted path like the others; None means /.
enrol: Option<Enrolment>Door::Here only: where the FIRST key is enrolled, when this server
offers enrolment on this page at all.
★ A ceremony with no way to enrol a key is one page short of useful. MEASURED on holger.rs 2026-09-20: the button worked, called the door, and the door answered “no passkey is registered yet” — true, and a dead end, because nothing was enrolled and the only place to enrol was a second page again.