Android의 생체 인식 라이브러리에 대해 알아야 할 모든 것

Android는 Android API 레벨 28 또는 Android 9에서 새로운 생체 ​​인증 라이브러리를 출시했습니다. Android의 생체 인식 라이브러리는 기존 Figure 인쇄 인증 라이브러리의 확장입니다 (Android API 레벨 23 또는 Android 6 이상에서 사용 가능). 생체 인식 인증의 경우 기기에 Android API 레벨 23 이상이 있어야합니다.

Android의 지문 라이브러리와 어떻게 다릅니 까?

기존 지문 라이브러리는 지문 인증 만 지원하지만이 라이브러리는 얼굴 인증과 홍채 인증 도 지원 합니다 . 얼굴 잠금 또는 지문 중에서 선택할 수있는 기능을 제공하는 IOS와 달리 Android에는 권한이 없습니다.. 그 이유는 Android가 기기에서 사용되는 다양한 하드웨어가있는 많은 기기를 지원하기 때문입니다. 이 권한을 사용자에게 부여하면 보안이 손상됩니다. 강한 등급의 얼굴 또는 홍채 스캔 하드웨어가있는 장치 만 얼굴 또는 홍채 인증을 지원할 수 있습니다. 현재 이러한 하드웨어가있는 장치는 거의 없습니다. 따라서 얼굴 또는 홍채 인증을 지원하는 장치를 거의 볼 수 없습니다. (현재 Pixel 4 만 얼굴 인증 기능을 지원하지만 곧 더 많은 장치가 시장에 출시 될 것이라고 인터넷에서 읽었습니다.)

그림 인쇄 라이브러리에서 프롬프트 화면을위한 자체 사용자 정의 UI를 디자인해야했습니다. 생체 인식 라이브러리는 프롬프트 화면을위한 기본 UI를 제공합니다. 한편으로는 UI를 디자인하는 데 드는 개발자의 시간과 에너지를 절약하고 기본 UI를 제한적으로 수정할 수 있습니다. 대화 상자의 디자인을 변경하지 않고 네거티브 버튼제목, 부제 및 텍스트 만 수정할 수 있습니다 . Builder를 통해 노출되지 않는 프롬프트에는 속성을 설정할 수 없습니다 . UI는 시스템에서 제공하며 모든 앱에서 균일하게 설계되었습니다. 이것은 일종의이 API의 요점입니다. 이렇게하면 사용자가 프롬프트에 익숙해지고 상호 작용하는 모든 것이 사용하기에 안전하다는 것을 알게됩니다.

요약하면 다음은 생체 인식 라이브러리의 한계입니다.

  • API 레벨 23 (또는 Android 6) 미만의 기기에는 생체 인식이 지원되지 않습니다.
  • 장치가 다중 생체 인식을 지원하는 경우 사용자는 설정에서 기본 / 선호 방법을 지정할 수 없습니다. 생체 인식 라이브러리는 지문, 얼굴 또는 홍채와 같이 사용할 수있는 인증 방법을 선택할 수있는 권한을 제공하지 않습니다. 인증이 성공인지 실패인지 확인합니다.
  • 기본 UI에 대한 제한적인 수정을 제공합니다. 대화 상자의 기본 UI를 변경하지 않고 네거티브 버튼의 제목, 부제 및 텍스트 만 수정할 수 있습니다 .

앱의 build.gradle 파일에 다음 종속성을 추가해야합니다.

dependencies {
    implementation 'androidx.biometric:biometric:1.0.1'
}
  • 기기가 Android 6.0 이상을 실행 중입니다.
  • 장치에는 지문 센서가 있습니다.
  • 사용자가 앱에 지문 센서에 액세스 할 수있는 권한을 부여했습니다.
  • 사용자가 기기에 하나 이상의 지문을 등록했습니다.

val biometricManager = BiometricManager.from(this)
when (biometricManager.canAuthenticate(BIOMETRIC_STRONG or DEVICE_CREDENTIAL)) {
    BiometricManager.BIOMETRIC_SUCCESS ->
        Log.d("MY_APP_TAG", "App can authenticate using biometrics.")
    BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE ->
        Log.e("MY_APP_TAG", "No biometric features available on this device.")
    BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE ->
        Log.e("MY_APP_TAG", "Biometric features are currently unavailable.")
    BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
        // Prompts the user to create credentials that your app accepts.
        val enrollIntent = Intent(Settings.ACTION_BIOMETRIC_ENROLL).apply {
            putExtra(Settings.EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED,
                BIOMETRIC_STRONG or DEVICE_CREDENTIAL)
        }
        startActivityForResult(enrollIntent, REQUEST_CODE)
    }
}

private lateinit var executor: Executor
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo: BiometricPrompt.PromptInfo

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_login)
    executor = ContextCompat.getMainExecutor(this)
    biometricPrompt = BiometricPrompt(this, executor,
            object : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationError(errorCode: Int,
                errString: CharSequence) {
            super.onAuthenticationError(errorCode, errString)
            Toast.makeText(applicationContext,
                "Authentication error: $errString", Toast.LENGTH_SHORT)
                .show()
        }

        override fun onAuthenticationSucceeded(
                result: BiometricPrompt.AuthenticationResult) {
            super.onAuthenticationSucceeded(result)
            Toast.makeText(applicationContext,
                "Authentication succeeded!", Toast.LENGTH_SHORT)
                .show()
        }

        override fun onAuthenticationFailed() {
            super.onAuthenticationFailed()
            Toast.makeText(applicationContext, "Authentication failed",
                Toast.LENGTH_SHORT)
                .show()
        }
    })

    promptInfo = BiometricPrompt.PromptInfo.Builder()
            .setTitle("Biometric login for my app")
            .setSubtitle("Log in using your biometric credential")
            .setNegativeButtonText("Use account password")
            .build()

    // Prompt appears when user clicks "Log in".
    // Consider integrating with the keystore to unlock cryptographic operations,
    // if needed by your app.
    val biometricLoginButton =
            findViewById<Button>(R.id.biometric_login)
    biometricLoginButton.setOnClickListener {
        biometricPrompt.authenticate(promptInfo)
    }
}
이것이 생체 인식 프롬프트 대화 상자의 모습입니다. 부정적인 작업 버튼의 제목, 부제 및 텍스트를 수정할 수 있습니다 (이 경우 CANCEL).

이러한 것 외에도 라이브러리는 아래에 언급 된 몇 가지 다른 기능을 제공합니다.

앱 내에서 민감한 정보를 추가로 보호하기 위해 .NET Framework 인스턴스를 사용하여 암호화를 생체 인증 워크 플로에 통합 할 수 있습니다 CryptoObject. : 프레임 워크는 다음 암호화 객체를 지원 Signature, CipherMac.

생체 인식 자격 증명 또는 잠금 화면 자격 증명 (PIN, 패턴 또는 암호)을 사용하여 인증을 허용하는 비밀 키를 사용할 수 있습니다.

위에서 언급 한 기능의 경우 다음 링크로 이동하여 공식 문서를 볼 수 있습니다.

https://developer.android.com/training/sign-in/biometric-auth

LinkedIn에서 나와 연결할 수 있습니다. https://www.linkedin.com/in/anantramanindia/

Suggested posts

Flow / LiveData…. 무엇입니까? 최상의 사용 사례. (로그인 시스템 구축)

Flow / LiveData…. 무엇입니까? 최상의 사용 사례. (로그인 시스템 구축)

현대의 안드로이드 개발자로서 "라이브 데이터"또는 "플로우"라는 단어를 여러 번 접했을 것입니다. 관련 기사가 너무 많지만 대부분이 '사용'사례를 무시하고 초보자가 라이브 데이터를 이해하기 어렵다고 생각합니다. 라이브 데이터는 기본적으로 강력한 설계를 지원하는 라이브러리 모음 인 Android 아키텍처 구성 요소의 일부입니다. 테스트 및 유지 관리가 가능한 앱.

그래서 iPhone으로 전환하고 싶습니까?

그래서 iPhone으로 전환하고 싶습니까?

여기에 필요한 모든 것이 있습니다. 친구가이 기사를 요청했습니다. 여기 있습니다.

Related posts

Kotlin을 사용하여 Android RecyclerView 항목을 다시 정렬하려면 드래그하세요.

Android 앱에서 멋진 맞춤형 목록 작성

Kotlin을 사용하여 Android RecyclerView 항목을 다시 정렬하려면 드래그하세요.

이 기사에서는 항목을 다시 정렬 할 수있는 기능을 제공하는 RecyclerView를 구현하는 방법에 대해 알아 봅니다. 타사 라이브러리를 사용하지 않고이 작업을 수행 할 것입니다.

Google Play 인앱 리뷰

Google Play 인앱 리뷰

Google Play Core 라이브러리는 인앱 리뷰에 대한 지원을 추가하여 사용자가 앱이나 게임을 떠나지 않고도 평점과 리뷰를 제출할 수 있도록합니다. 이 문서는 메모장 앱 연구 사례를 통해 Android에서이 기능을 구현하는 방법과 Google Play 스토어에서 사용자의 가시성에 미치는 영향을 보여줍니다.

Android에서 나만의 AR 애플리케이션 만들기

Android에서 나만의 AR 애플리케이션 만들기

이 기사에서는 카메라에서 얼굴에 효과를주는 Android 애플리케이션을 실시간으로 작성하는 방법을 설명합니다. 여기서는 카메라 작업, 얼굴 찾기, 얼굴의 포인트 찾기 및 결과 그리기 등 모든 핵심 사항을 살펴 보겠습니다.

Gradle 종속성 : 메시 🤯

Gradle 종속성을 현명하게 관리하세요 !!

Gradle 종속성 : 메시 🤯

종속성이 증가 할 때마다 Gradle 파일을 관리하기가 어려워집니다. 이 블로그에서는 종속성을 다른 파일로 이동하고 유사한 종속성을 그룹화하여 관리하려고합니다.