标签: android-biometric-prompt

如何显示显示的生物特征提示指纹的身份验证错误。#Android

我正在实施Bio metric Prompt API,以授权用户使用指纹。我发现Bio-metric Prompt API根据设备传感器类型显示不同的UI。

在此处输入图片说明

生物识别API SDK调用可独立工作,以根据传感器类型显示相应的UI。

在此处输入图片说明

现在需要关注的是:

  1. 如果是背面(在某些设备中位于设备的侧面)受感测的设备,它将显示对话框,如果有的话,该对话框也用于显示错误。
  2. 但是,如果是在显示器下方/下方显示的设备,它只会显示指纹印记,并且不会显示任何错误。

现在的问题是:

  1. 使用该显示提示是否可以显示错误的任何API功能。
  2. 如果没有,我们如何区分两种类型的传感器设备,从而可以显式地处理错误。

android android-biometric-prompt in-display-fingerprint under-display-fingerprint

5
推荐指数
1
解决办法
212
查看次数

在生物识别提示中使用时如何确定使用哪种生物识别?

例如,如果用户的手机同时具有faceID 和指纹。

当前生物识别提示正在选择一个首先设置的用户

android kotlin android-biometric-prompt

5
推荐指数
1
解决办法
3496
查看次数

添加新生物识别信息时使 SecretKey 无效

我遇到了一个问题,当用户向其 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

5
推荐指数
1
解决办法
1388
查看次数

检测设备是用密码锁还是人脸锁的指纹锁保护的?

我的应用程序包含登录的用户身份验证(包括 pin/图案、指纹解锁),这取决于设备安全性。我正在使用生物识别管理器来使用BiometricManager检测设备是否支持指纹,并使用isDeviceSecure()检查设备是否受到保护。我需要检测移动设备在哪种模式下受到保护,无论是使用引脚/图案、使用指纹的引脚/图案、使用面部解锁的引脚/图案还是所有三种模式(引脚/图案、面部解锁、指纹)。

android android-fingerprint-api android-biometric-prompt android-biometric

5
推荐指数
1
解决办法
1561
查看次数

如何使用 Biometric api 进行人脸认证

我使用了使用 Biometric api 的指纹认证及其工作。我需要对人脸识别做同样的事情,比如点击登录按钮而不是密码,我将使用人脸认证。

那么可以使用 Biometric api 还是我必须使用 Open cv?

android android-biometric-prompt

4
推荐指数
1
解决办法
4009
查看次数

使用设备凭据时,AuthenticationCallback 中的 Android 生物识别身份验证无效变量

我正在使用 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 kotlin android-biometric-prompt android-biometric

3
推荐指数
1
解决办法
2586
查看次数

Android 生物识别:IllegalStateException。必须至少注册一项生物识别才能创建需要用户身份验证的密钥

我正在使用 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 androidx android-biometric-prompt android-biometric

3
推荐指数
1
解决办法
559
查看次数

找不到 android.security.identity.IdentityCredential 的类文件

作为我的应用程序中身份验证的一部分,我正在尝试实施生物识别身份验证。

我根据文档进行了所需的代码更改。

在构建我的应用程序时,我面临以下构建错误。

找不到 android.security.identity.IdentityCredential 的类文件

请在下面找到 build.gradle 文件。

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.vj.togetheron"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {


    //implementation "androidx.security:security-crypto:1.0.0-rc03"

    // For Identity Credential APIs
    //implementation "androidx.security:security-identity-credential:1.0.0-alpha01"
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //noinspection GradleCompatible
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'androidx.biometric:biometric:1.1.0-beta01'
    implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
    //implementation "androidx.security:security-identity-credential:1.0.0-alpha01"
    //implementation 'androidx.security:security-crypto:1.1.0-alpha02'
    testImplementation 'junit:junit:4.13.1'
    androidTestImplementation …
Run Code Online (Sandbox Code Playgroud)

android build.gradle androidx android-biometric-prompt

3
推荐指数
1
解决办法
814
查看次数

如何替换已弃用的 KeyGenParameterSpec.Builder.setUserAuthenticationValidityDurationSeconds?

从 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

3
推荐指数
1
解决办法
2859
查看次数