You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
.NET 9 Minimal API project in plugins/VaultFlower.Plugin.Smartcard/
GET /health, /health/ready, /info endpoints
Consul registration + PluginRegisteredEvent on startup
POST /enroll — register card for user (Admin only)
card_uid → SHA-256 hash stored in Vault (raw UID never stored)
pin → bcrypt hash stored in Vault (raw PIN never stored)
Reverse lookup by UID hash: vfw/mfa/smartcard/by-uid/{hash}
Supports MIFARE_CLASSIC, MIFARE_PLUS, MIFARE_DESFIRE
POST /verify — verify card UID hash + PIN hash
Both wrong card AND wrong PIN return same error message
(no information about which factor failed)
mfa_token issued in Vault as factor_number=3
Summary
Implement VaultFlower.Plugin.Smartcard Docker container.
Mifare NFC card UID + PIN as Factor 3 for CRITICAL asset checkout.
Context
See Plugin-Smartcard and
Plugin-Development
Acceptance Criteria
card_uid → SHA-256 hash stored in Vault (raw UID never stored)
pin → bcrypt hash stored in Vault (raw PIN never stored)
Reverse lookup by UID hash: vfw/mfa/smartcard/by-uid/{hash}
Supports MIFARE_CLASSIC, MIFARE_PLUS, MIFARE_DESFIRE
Both wrong card AND wrong PIN return same error message
(no information about which factor failed)
mfa_token issued in Vault as factor_number=3
Removes reverse lookup, marks is_active=false
smartcard_failed, smartcard_blocked, smartcard_expired, smartcard_revoked