Слайд 2Define
Physiological
VS
Behavioral

Слайд 3Verification (one-to-one)
Identification (one-to-many)

Слайд 9Deploy
Gradle:
dependencies {
implementation "androidx.biometric:biometric:1.0.1"
}

Слайд 10Deploy
private lateinit var executor: Executor
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo:

BiometricPrompt.PromptInfo
override fun onCreate(savedInstanceState: Bundle?) {
...
executor = ContextCompat.getMainExecutor(this)
biometricPrompt = BiometricPrompt(this, executor,
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int,errString: CharSequence)
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult)
override fun onAuthenticationFailed()
}
)
Слайд 11Deploy
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using

your biometric credential")
.setNegativeButtonText("Use account password")
.build()
Слайд 12Deploy
// Allows user to authenticate using their lock screen
// PIN, pattern, or

password.
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
// Cannot call setNegativeButtonText() and
// setDeviceCredentialAllowed() at the same time.
// .setNegativeButtonText("Use account password")
.setDeviceCredentialAllowed(true)
.build()
Слайд 13Deploy
// Allows user to authenticate using their lock screen
// PIN, pattern, or

password.
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
// Cannot call setNegativeButtonText() and
// setDeviceCredentialAllowed() at the same time.
// .setNegativeButtonText("Use account password")
.setDeviceCredentialAllowed(true)
.build()
Слайд 14Enjoy
Cryptographic solution that depends on authentication
Authenticate using only biometric credentials
Authenticate using either

biometric or lock screen credentials
Authenticate without explicit user action
Слайд 15Update
Android 6
Android 8
Android 9
Android 10
