有什么方法可以将我们自己的自定义布局添加到生物识别提示中,因为我已经看到了各种类似的线程,但似乎还没有为其提供解决方案,并且不推荐使用指纹管理器,所以我不想使用它。
android android-fingerprint-api android-biometric-prompt android-biometric
我想将指纹集成到我的项目的身份验证过程中,然后保存并比较该指纹。
我尝试过集成几段代码,但到目前为止还没有成功。如何在 Android 应用程序中保存和比较指纹?
我遇到了一个问题,当用户向其 Android 设备添加新指纹时,我想使 SecretKey 失效。我可以毫无问题地生成密钥、调出生物识别提示。当我添加新指纹时,密钥不会引发异常..它仍然允许出现提示。
我可以从设备中删除所有指纹,并引发 KeyPermanentlyInvalidatedException。
我正在使用 BiometricPrompt AndroidX 库,并将 minSDK 设置为 28。我一直在遵循本指南:https ://developer.android.com/training/sign-in/biometric-auth#crypto
我的代码如下 - 如果有人愿意帮助我解决这个问题,我将非常感激。
package com.example.dogtime
import android.os.Bundle
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyPermanentlyInvalidatedException
import android.security.keystore.KeyProperties
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import androidx.biometric.BiometricPrompt
import androidx.core.content.ContextCompat
import butterknife.ButterKnife
import java.security.KeyStore
import javax.crypto.Cipher
import javax.crypto.KeyGenerator
import javax.crypto.SecretKey
class MainActivity : AppCompatActivity() {
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var biometricPromptInfo: BiometricPrompt.PromptInfo
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ButterKnife.bind(this)
setContentView(R.layout.activity_main)
// Set up prompt
biometricPrompt = BiometricPrompt(
this,
ContextCompat.getMainExecutor(baseContext),
object …Run Code Online (Sandbox Code Playgroud) android kotlin android-keystore android-biometric-prompt android-biometric
我的应用程序包含登录的用户身份验证(包括 pin/图案、指纹解锁),这取决于设备安全性。我正在使用生物识别管理器来使用BiometricManager检测设备是否支持指纹,并使用isDeviceSecure()检查设备是否受到保护。我需要检测移动设备在哪种模式下受到保护,无论是使用引脚/图案、使用指纹的引脚/图案、使用面部解锁的引脚/图案还是所有三种模式(引脚/图案、面部解锁、指纹)。
android android-fingerprint-api android-biometric-prompt android-biometric
我想检查 API 级别为 28+ 的 Android 设备支持哪些生物识别技术,以便能够向用户显示相关文本。例如“指纹登录”、“人脸登录”、“虹膜登录”、“启用指纹登录”、“启用人脸登录”等。
我正在使用BiometricManager.canAuthenticate()来确定是否可以使用生物识别技术。对于 28 之前的版本在内部BiometricManager使用,FingerprintManagerCompat所以我知道如果结果是BIOMETRIC_SUCCESS设备使用指纹。
有没有办法知道支持哪些生物识别技术——指纹、面部、虹膜?也许某些设备可以支持多个。
我正在使用 androidx.biometric:biometric:1.0.1一切正常,但是当我的设备没有生物识别传感器时(或者当用户没有设置他的指纹等)并且我在进行身份验证后尝试使用DeviceCredentials 时,我的功能输入数据无效。
class MainActivity : AppCompatActivity() {
private val TAG = MainActivity::class.java.name
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<View>(R.id.first).setOnClickListener {
authenticate(MyData(1, "first"))
}
findViewById<View>(R.id.second).setOnClickListener {
authenticate(MyData(2, "second"))
}
}
private fun authenticate(data: MyData) {
Log.e(TAG, "starting auth with $data")
val biometricPrompt = BiometricPrompt(
this,
ContextCompat.getMainExecutor(this),
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
Log.e(TAG, "auth done : $data")
}
})
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setDeviceCredentialAllowed(true)
.setTitle("title")
.build()
biometricPrompt.authenticate(promptInfo)
}
}
data class MyData(
val …Run Code Online (Sandbox Code Playgroud) 我正在使用 android Biometricx 库进行面部和指纹认证。当仅注册 FaceID 并且我尝试创建密钥时,我收到“ IllegalStatException:必须至少注册一个生物识别才能创建需要用户身份验证的密钥”
我正在尝试像这样创建secretKey
try {
mKeyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME,
KeyProperties.PURPOSE_ENCRYPT |
KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
// Require the user to authenticate with a fingerprint to authorize every use
// of the key
.setUserAuthenticationRequired(true)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.build());
secretKey = mKeyGenerator.generateKey();
} catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException
| CertificateException | IOException e) {
Toast.makeText(this,"Create Key "+ e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
注册指纹后,代码工作正常。只有在注册 FaceId 时才会发生这种情况。我在这里缺少什么?
从 android 11 开始,setUserAuthenticationValidityDurationSeconds 已被弃用,取而代之的是 KeyGenParameterSpec.Builder 中的 setUserAuthenticationParameters,但接缝处对以前的版本有任何支持。
那么,最好的解决方案是什么?
KeyGenParameterSpec.Builder builder = new KeyGenParameterSpec.Builder(...)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R)
builder.setUserAuthenticationParameters(timeout, KeyProperties.AUTH_DEVICE_CREDENTIAL | KeyProperties.AUTH_BIOMETRIC_STRONG);
else
//noinspection deprecation
builder.setUserAuthenticationValidityDurationSeconds(timeout);
Run Code Online (Sandbox Code Playgroud)
这个?
security android android-keystore android-biometric-prompt android-biometric