Android 15'te Kimlik Bilgisi Yöneticisi, kimlik bilgileri için tek dokunuşla akışı destekler. Ürün Sahibi sorumludur. Bu akışta, oluşturulmakta veya kullanılmakta olan kimlik bilgisinin bilgileri, daha fazla seçeneğe erişim noktasıyla birlikte doğrudan Biyometrik İstem'de gösterilir. Bu basitleştirilmiş süreç, verimli ve kolaylaştırılmış kimlik bilgisi oluşturma ve alma sürecidir.
Koşullar:
- Kullanıcının cihazında biyometri ayarlandı ve kullanıcı şu işlemi yapmasına izin veriyor: için de geçerli olur.
- Oturum açma akışları için bu özellik yalnızca tek hesap senaryolarında etkinleştirilir. Birden fazla kimlik bilgisi (geçiş anahtarı ve şifre gibi) olsa bile ekleyebilirsiniz.
Geçiş anahtarı oluşturma akışlarında tek dokunuşları etkinleştir
Bu yöntemin oluşturma adımları, mevcut kimlik bilgisi oluşturma işlemiyle eşleşir
işlemi hakkında daha fazla bilgi edinin. BeginCreatePublicKeyCredentialRequest
içinde,
Geçiş anahtarı içinse isteği işlemek üzere handleCreatePasskeyQuery()
.
is BeginCreatePublicKeyCredentialRequest -> {
Log.i(TAG, "Request is passkey type")
return handleCreatePasskeyQuery(request, passwordCount, passkeyCount)
}
handleCreatePasskeyQuery()
dosyanıza CreateEntry
sınıfıyla birlikte BiometricPromptData
ekleyin:
val createEntry = CreateEntry(
// Additional properties...
biometricPromptData = BiometricPromptData(
allowedAuthenticators = allowedAuthenticator
)
)
Kimlik bilgisi sağlayıcılar, allowedAuthenticator
özelliğini açıkça ayarlamalıdır
BiometricPromptData
örneğinde. Bu özellik ayarlanmazsa
varsayılan olarak DEVICE_WEAK
değerine ayarlanır. Kullanım alanınız için gerekirse isteğe bağlı cryptoObject
özelliğini ayarlayın.
Oturum açma geçiş anahtarı akışlarında tek dokunuşla oturum açma özelliğini etkinleştirme
Geçiş anahtarı oluşturma akışına benzer şekilde, bu işlem de
kullanıcı oturum açma işlemini işleme. BeginGetPublicKeyCredentialOption
altında,
populatePasskeyData()
aracını kullanarak
kimlik doğrulama isteği:
is BeginGetPublicKeyCredentialOption -> {
// ... other logic
populatePasskeyData(
origin,
option,
responseBuilder,
autoSelectEnabled,
allowedAuthenticator
)
// ... other logic as needed
}
CreateEntry
özelliğine benzer şekilde, BiometricPromptData
örneği şuna ayarlanır:
PublicKeyCredentialEntry
örneği. Açıkça belirtilmediği takdirde
allowedAuthenticator
, varsayılan olarak BIOMETRIC_WEAK
değerine ayarlıdır.
PublicKeyCredentialEntry(
// other properties...
biometricPromptData = BiometricPromptData(
allowedAuthenticators = allowedAuthenticator
)
)
Kimlik bilgisi girişi seçimini işleme
Geçiş anahtarı oluşturma için kimlik bilgisi girişi seçimini işlerken veya
oturum açma sırasında geçiş anahtarı seçimi, PendingIntentHandler's
retrieveProviderCreateCredentialRequest
numaralı telefonu arayın veya
retrieveProviderGetCredentialRequest
(uygun şekilde). Bunlar nesne döndürür
içeren bir liste oluşturabilirsiniz. Örneğin,
geçiş anahtarı oluşturma girişi seçimi, kodunuzu şu şekilde güncelleyin:
val createRequest = PendingIntentHandler.retrieveProviderCreateCredentialRequest(intent)
if (createRequest == null) {
Log.i(TAG, "request is null")
setUpFailureResponseAndFinish("Unable to extract request from intent")
return
}
// Other logic...
val biometricPromptResult = createRequest.biometricPromptResult
// Add your logic based on what needs to be done
// after getting biometrics
if (createRequest.callingRequest is CreatePublicKeyCredentialRequest) {
val publicKeyRequest: CreatePublicKeyCredentialRequest =
createRequest.callingRequest as CreatePublicKeyCredentialRequest
if (biometricPromptResult == null) {
// Do your own authentication flow, if needed
}
else if (biometricPromptResult.isSuccessful) {
createPasskey(
publicKeyRequest.requestJson,
createRequest.callingAppInfo,
publicKeyRequest.clientDataHash,
accountId
)
} else {
val error = biometricPromptResult.authenitcationError
// Process the error
}
// Other logic...
}
Bu örnekte, biyometri akışının başarısı hakkında bilgiler yer alır. Aynı zamanda
kimlik bilgisi hakkında başka bilgiler içerir. Akış başarısız olursa karar vermek için biometricPromptResult.authenticationError
altındaki hata kodunu kullanın.
Bu hatanın bir parçası olarak döndürülen hata kodları
biometricPromptResult.authenticationError.errorCode
aynı hata kodlarıdır
örneğin, androidx.biyometrik kitaplığında
androidx.biometric.BiometricPrompt.NO_SPACE,
androidx.biometric.BiometricPrompt.UNABLE_TO_İŞLEM,
androidx.biometric.BiometricPrompt.ERROR_TIMEOUT vb. İlgili içeriği oluşturmak için kullanılan
authenticationError
,
Kullanıcı arayüzünde görüntülenebilen errorCode
.
Benzer şekilde, retrieveProviderGetCredentialRequest
sırasında meta verileri çıkarın.
Biyometrik akışkanınızın null
olup olmadığını kontrol edin. Cevabınız evet ise kendi biyometrinizi şu şekilde yapılandırın:
kimlik doğrulama. Bu, get işlemine benzer:
val getRequest =
PendingIntentHandler.retrieveProviderGetCredentialRequest(intent)
if (getRequest == null) {
Log.i(TAG, "request is null")
setUpFailureResponseAndFinish("Unable to extract request from intent")
return
}
// Other logic...
val biometricPromptResult = getRequest.biometricPromptResult
// Add your logic based on what needs to be done
// after getting biometrics
if (biometricPromptResult == null)
{
// Do your own authentication flow, if necessary
} else if (biometricPromptResult.isSuccessful) {
Log.i(TAG, "The response from the biometricPromptResult was ${biometricPromptResult.authenticationResult.authenticationType}")
validatePasskey(
publicKeyRequest.requestJson,
origin,
packageName,
uid,
passkey.username,
credId,
privateKey
)
} else {
val error = biometricPromptResult.authenitcationError
// Process the error
}
// Other logic...