Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions common/client_types.proto
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ enum MfaMethod {
OIDC = 2;
BIOMETRIC = 3;
MOBILE_APPROVE = 4;
FIDO2 = 5;
}

// Multi-step MFA (added for 2.2)
Expand Down Expand Up @@ -295,7 +296,13 @@ message ClientMfaStepStartResponse {
// callbacks can be matched against the attempt that is actually current.
string step_attempt_id = 1;
// Biometric or mobile-approve challenge, when the method needs one.
// [2.2] For FIDO2 this holds the challenge the key has to sign.
optional string challenge = 2;
// [2.2] For FIDO2: the credentials registered for this user, base64url as
// webauthn-rs serializes them. The client offers the whole list to the key,
// which answers for the one it holds, and names it in the finish request so
// later attempts can be narrowed to that credential.
repeated string credential_ids = 3;
}

message ClientMfaStartRequest {
Expand Down Expand Up @@ -330,17 +337,28 @@ message ClientMfaStartResponse {
// [2.2] Per-step rejections, sparse - only failing steps appear. Non-empty
// means the plan was refused and no session was created.
repeated MfaStepRejection rejections = 3;
// [2.2] For FIDO2 on the legacy fused path: the credentials registered for
// this user, alongside the challenge above.
repeated string credential_ids = 4;
}

message ClientMfaFinishRequest {
string token = 1;
// [2.2] For FIDO2 this holds the hash of RP ID.
optional string code = 2;
// [2.2] For FIDO2 this holds the signature.
optional string auth_pub_key = 3;
// [2.2] The attempt id minted by StepStart for the step being submitted. It binds
// this proof to a specific attempt, so a stale or duplicate proof cannot advance
// the step twice. Optional so pre-2.2 clients that omit it still parse; a None
// value keeps the legacy single-step path working.
optional string step_attempt_id = 4;
// [2.2] FIDO2
optional bytes auth_data = 5;
// [2.2] For FIDO2: which credential actually signed, base64url. Picked by the
// key out of the list it was offered, so Core knows which of the user's
// security keys is in use.
optional string credential_id = 6;
}

message ClientMfaFinishResponse {
Expand Down
Loading