BiometricsVault 是一个适用于 iOS 和 macOS 的 Swift 6.0 包,它可以简化对生物识别登录的支持。
场景 | 生物识别保险库 |
---|---|
用户刚刚登录 | 跨应用启动在钥匙串上持久保存凭据 |
用户启用 FaceID/TouchID | 使用生物识别保护凭据 |
用户禁用 FaceID/TouchID | 删除凭据或在没有生物识别安全的情况下存储它们 |
应用由于安全原因被锁定 | 要求 FaceID/TouchID 验证并检索凭据 |
用户继续应用会话 | 要求 FaceID/TouchID 验证并检索凭据 |
用户注销 | 从钥匙串中删除凭据 |
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 swift
编译器中。
设置好 Swift 包后,只需将其添加到 Package.swift
的 dependencies
值或 Xcode 中的 Package 列表中,即可轻松地将 BiometricsVault 添加为依赖项。
dependencies: [
.package(url: "https://github.com/ariskox/BiometricsVault.git", .upToNextMajor(from: "1.0.0"))
]
将 BiometricsVault
作为依赖项添加到您的目标
.product(name: "BiometricsVault", package: "BiometricsVault")
假设用户刚刚登录到我们的应用程序并获得了一些凭据。
使用自定义 'key' 创建保险库的实例,该 'key' 将在钥匙串上保存凭据。 key 只是钥匙串中条目的名称。它不应该是什么特殊的东西或加密密钥
将凭据保存到钥匙串,没有任何特殊安全措施
let vault = BiometricsVault<Credentials>(key: "biometrics_credentials")
try vault.enableKeychainVault(saving: credentials)
let vault = BiometricsVault<Credentials>(key: "biometrics_credentials")
switch vault.state {
case .keychainSecured(let credentials):
// we can login the user, validate the token, or any other operation we'd like
default:
break
}
let vault = BiometricsVault<Credentials>(key: "biometrics_credentials")
vault.resetEverything()
let vault = BiometricsVault<Credentials>(key: "biometrics_credentials")
try await vault.upgradeKeychainWithBiometrics()
let vault = BiometricsVault<Credentials>(key: "biometrics_credentials")
let savedCredentials = try await vault.unlockWithBiometrics()
switch error {
case let laError as LAError where laError.code == LAError.biometryLockout:
let _ = try await vault.reauthenticateOwner()
default:
break // do other stuff
有关更多信息,请查看目录 Example 中的示例应用程序
从设置启用 FaceID/TouchID 选项的简单登录流程如下
stateDiagram-v2
[*] --> Ready
Ready --> KeychainSecured: enableKeychainVault
KeychainSecured --> ΒiometricsSecured: upgradeKeychainWithBiometrics
ΒiometricsSecured --> Locked: lock
Locked --> ΒiometricsSecured: unlockWithBiometrics
ΒiometricsSecured --> Ready: disableBiometricsSecureVault
stateDiagram-v2
[*] --> Ready
[*] --> Unavailable
Ready --> ΒiometricsSecured: enableSecureVaultWithBiometrics
ΒiometricsSecured --> Locked: lock
Locked --> ΒiometricsSecured: unlockWithBiometrics
Ready --> KeychainSecured: enableKeychainVault
KeychainSecured --> Ready: resetEverything
ΒiometricsSecured --> Ready: disableBiometricsSecureVault
ΒiometricsSecured --> KeychainSecured: downgradeBiometricsToKeychain
KeychainSecured --> ΒiometricsSecured: upgradeKeychainWithBiometrics
Locked --> Ready: resetEverything
BiometricsVault 在 MIT 许可证下发布。 有关详细信息,请参阅 LICENSE。