Skip to content

fix: resolve discoverable credentials login issue#159

Closed
forkline-bot[bot] wants to merge 1 commit intomasterfrom
fix/issue-157-discoverable-credentials
Closed

fix: resolve discoverable credentials login issue#159
forkline-bot[bot] wants to merge 1 commit intomasterfrom
fix/issue-157-discoverable-credentials

Conversation

@forkline-bot
Copy link

@forkline-bot forkline-bot bot commented Feb 21, 2026

Summary

  • Fixed the AuthenticatorOptions configuration that was blocking discoverable credential flows
  • Changed uv: Some(true) to uv: None to not claim built-in UV capability
  • Changed always_uv: Some(true) to always_uv: None to not require UV for operations
  • Changed client_pin: None to client_pin: Some(false) to indicate PIN supported but not set

Root Cause Analysis

The issue was in how soft-fido2-ctap handles MakeCredential vs GetAssertion:

  1. uv: Some(true) caused is_protected_by_uv() to return true
  2. always_uv: Some(true) required UV for all operations
  3. GetAssertion has auto-UV logic in Step 5.4 that sets options.uv = true when has_built_in_uv_enabled() is true
  4. MakeCredential lacks this auto-UV logic - when browser doesn't request UV, it returns OperationDenied

This inconsistency in soft-fido2-ctap caused discoverable credential login to fail.

The Fix

By setting:

  • uv: None - Don't claim built-in UV (passless uses notifications, not biometrics)
  • client_pin: Some(false) - PIN supported but not set
  • always_uv: None - Don't require UV for operations

This allows the request_up callback to handle user presence via desktop notifications without triggering UV requirement checks in soft-fido2.

Resolves: #157

The root cause was in the AuthenticatorOptions configuration:

1. uv: Some(true) caused is_protected_by_uv() to return true
2. always_uv: Some(true) required UV for all operations
3. soft-fido2-ctap's MakeCredential lacks auto-UV logic that GetAssertion has
4. When browser didn't request UV, operations returned OperationDenied

The fix:
- uv: None - Don't claim built-in UV capability (passless uses notifications, not biometrics)
- client_pin: Some(false) - PIN supported but not set
- always_uv: None - Don't require UV for operations

This allows discoverable credential flows to work via the request_up callback
for user presence, without triggering UV requirement checks in soft-fido2.

Resolves: #157
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Login without username not working

1 participant