Skip to content

passkey_child doesn't prompt for PIN when device returns FIDO_ERR_PIN_REQUIRED #8724

Description

@romeo-am

I'm using a Token2 Bio3 with FreeIPA passkey auth on Rocky 10. The setup is --require-user-verification=off in FreeIPA and alwaysUv=true on the key, so the key enforces UV locally via fingerprint. When the fingerprint reads correctly, auth works.

When the fingerprint doesn't read, the prompt just loops back to "Insert your passkey device, then press ENTER" and there's no way to enter a PIN. The only recovery is to unplug the key and try again.

From /var/log/sssd/passkey_child.log:

[passkey_child] [get_assert_data] (0x0400): Getting assert.
[passkey_child] [request_assert] (0x0040): fido_dev_get_assert failed [54]: FIDO_ERR_PIN_REQUIRED.

The device returns FIDO_ERR_PIN_REQUIRED to indicate PIN should be used. passkey_child logs it correctly then exits with status 1 instead of prompting for the PIN.

The same key handles this correctly in Chromium WebAuthn: fingerprint failure falls through to a PIN prompt within the same flow.

To reproduce:

  • Biometric FIDO2 key with alwaysUv=true (Token2 PIN+ Bio3, AAGUID eabb46cce24180bfae9e96fa6d2975cf)
  • ipa user-add-passkey <user> --register
  • ipa passkeyconfig-mod --require-user-verification=off
  • Trigger any PAM auth, fail or skip the fingerprint
  • Expected: PIN prompt
  • Actual: loops on "press ENTER", FIDO_ERR_PIN_REQUIRED in passkey_child.log

Environment:

  • Rocky Linux 10
  • sssd-2.11.1-2.el10_1.1
  • ipa client 4.12.2
  • libfido2 1.14.0

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions