如何为UWP企业应用接入生物识别登录:InventorySample的Windows Hello实现全攻略

发布时间:2026/8/28 10:52:59
如何为UWP企业应用接入生物识别登录:InventorySample的Windows Hello实现全攻略 如何为UWP企业应用接入生物识别登录InventorySample的Windows Hello实现全攻略【免费下载链接】InventorySampleSample UWP application for LOB scenarios项目地址: https://gitcode.com/gh_mirrors/in/InventorySampleInventorySample 是一个微软开源的 UWP 企业应用LOB 场景示例项目它完整演示了如何为 UWP 应用接入 Windows Hello 生物识别登录让用户用指纹、面部识别或 PIN 码替代传统的用户名密码登录。本文以该项目的实现为蓝本带你快速看懂整套方案的设计思路、关键代码路径与落地步骤零基础也能照着做出一套安全的生物识别登录。 什么是 Windows Hello为什么企业应用需要它Windows Hello 是微软在 Windows 10 中内置的生物识别登录系统支持指纹、面部识别和 PIN 码三种验证方式。对企业应用如库存管理、订单系统来说它有两个明显优势更安全认证密钥由设备 TPM可信平台模块芯片生成并保护私钥永远不会离开设备应用也拿不到密钥本身更方便员工无需记忆和应用密码看一眼摄像头或按一次指纹就能进入系统。可以把 Hello 凭证理解为一把锁它本身不是用户身份而是解锁密钥的第二因素。官方文档对原理和流程有完整说明可参考 docs/WindowsHello/README.md。️ 先看整体登录功能是如何组织的InventorySample 采用经典的 MVVM 分层架构Windows Hello 登录被清晰地拆成了三层各层职责明确层级文件职责视图层 ViewLoginView.xaml、WindowsHelloControl.xaml展示密码登录 / Hello 登录两种入口视图模型层 ViewModelLoginViewModel.cs切换登录方式、调用服务、成功后跳转主界面服务层 ServiceLoginService.cs真正调用 Windows Hello APIKeyCredentialManager完成全部认证这种视图只管显示、服务只管认证的拆分是本项目最值得借鉴的地方——把生物识别逻辑全部收敛在一个服务类里方便测试和替换。 实现 Windows Hello 登录的四个关键步骤第一步检测设备是否支持 Windows Hello用户首次用密码登录后应用会调用KeyCredentialManager.IsSupportedAsync()检查系统是否已启用 Hello若支持则弹出对话框询问是否开启。入口在 LoginService.cs 的TrySetupWindowsHelloAsync方法由 LoginViewModel.cs 在密码登录成功后触发。第二步创建密钥凭证KeyCredential用户同意开启后应用调用KeyCredentialManager.RequestCreateAsync创建凭证。此时 Windows 会弹出上图所示的系统对话框让用户确认 PIN 或生物识别——只有本人验证通过后密钥才会真正生成。创建成功后应用通过credential.RetrievePublicKey()拿到公钥并把公钥哈希存入本地设置作为该用户已启用 Hello的标记。对应代码见 LoginService.cs 的SetupWindowsHelloAsync与CreatePassportKeyCredentialAsync方法。 提示真实项目中公钥及可选的 TPM 证明信息应发送到后端服务器注册设备本项目用RegisterPassportCredentialWithServerAsync方法留了明确的 TODO 占位。第三步一次点击完成生物识别登录已启用 Hello 的用户下次打开应用时登录页会直接显示 Hello 按钮见 LoginView.xaml 中的WindowsHelloControl。点击后认证流程只有三步KeyCredentialManager.OpenAsync(userName)打开该用户的凭证对一段 challenge 字节调用credential.RequestSignAsync此时 Windows 自动弹出指纹/面部/PIN 验证签名成功即认证通过应用跳转到主界面。完整逻辑见 LoginService.cs 的SignInWithWindowsHelloAsync方法视图模型的调用入口是 LoginViewModel.cs。第四步记住状态 支持关闭是否启用 Hello 由本地设置中的公钥哈希标记判断见 AppSettings.cs 的WindowsHelloPublicKeyHint属性。用户若选择暂不启用服务会调用KeyCredentialManager.DeleteAsync删除凭证并清除标记整个启用/关闭状态是闭环的。 关键代码路径速查想深入阅读源码按以下路径顺序看即可Windows Hello 服务实现src/Inventory.App/Services/Infrastructure/LoginService.cs登录视图模型src/Inventory.ViewModels/ViewModels/Login/LoginViewModel.cs登录页与 Hello 按钮控件src/Inventory.App/Views/Login/LoginView.xamlWindows Hello 原理与后端认证流程docs/WindowsHello/README.md登录背景素材LoginBackground.jpg 上手小贴士设备要求Windows Hello 需要设备已配置生物识别或 PIN设置 → 账户 → 登录选项应用侧无法代用户配置私钥不出设备应用永远只请求签名结果不接触密钥本体这是 Hello 方案安全性的核心留好密码兜底像本项目一样同时保留密码登录入口用户可随时切换体验更友好后端对接生产环境请把公钥注册和 challenge 验证流程补全服务端随机生成 challenge、用户签名、服务端用公钥校验详见文档中的 Authentication at the backend side 章节。掌握以上四步你就已经在自己的 UWP 企业应用中复刻了 InventorySample 的完整 Windows Hello 生物识别登录方案 【免费下载链接】InventorySampleSample UWP application for LOB scenarios项目地址: https://gitcode.com/gh_mirrors/in/InventorySample创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考