pub enum BackupPolicy {
Allow,
RequireDeviceBound,
}Expand description
Policy for multi-device (syncable) credentials — the WebAuthn L3 BE/BS story.
BE (backup eligibility) is an immutable creation-time property: “this credential may be backed up / synced”. BS (backup state) says whether it currently is. Both arrive in the signed authenticator data flags and are reported on both ceremony results.
§Account-recovery implications
- A synced (BE=1) credential lives in a cloud account (iCloud Keychain, Google Password Manager, …). Account recovery therefore follows the platform’s rules — a phone number or recovery email can resurrect the credential. Treat these like a possession factor that inherits the recovery strength of the user’s cloud account.
- A device-bound (BE=0) credential is confined to one hardware authenticator; losing the device means losing the credential (stronger possession semantics, worse recovery story).
- RPs that want to exclude synced credentials from sensitive flows use
BackupPolicy::RequireDeviceBound, which rejects BE=1 credentials.
Variants§
Allow
Accept device-bound and synced credentials; report the flags (default).
RequireDeviceBound
Reject BE=1 (syncable) credentials at both ceremonies.
Trait Implementations§
Source§impl Clone for BackupPolicy
impl Clone for BackupPolicy
impl Copy for BackupPolicy
Source§impl Debug for BackupPolicy
impl Debug for BackupPolicy
Source§impl Default for BackupPolicy
impl Default for BackupPolicy
impl Eq for BackupPolicy
Source§impl PartialEq for BackupPolicy
impl PartialEq for BackupPolicy
impl StructuralPartialEq for BackupPolicy
Auto Trait Implementations§
impl Freeze for BackupPolicy
impl RefUnwindSafe for BackupPolicy
impl Send for BackupPolicy
impl Sync for BackupPolicy
impl Unpin for BackupPolicy
impl UnsafeUnpin for BackupPolicy
impl UnwindSafe for BackupPolicy
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more