Uwierzytelnianie

Moduł AppFramework aplikacji AppStudio udostępnia wtyczkę Uwierzytelnianie służącą do uwierzytelniania użytkownika za pomocą podpisu biometrycznego na obsługiwanych urządzeniach. Funkcji tej można używać w połączeniu z usługą bezpiecznego przechowywania danych do przechowywania poświadczeń, tokenów i innych wrażliwych informacji oraz do uzyskiwania do nich dostępu. Aby korzystać z tej funkcjonalności, należy najpierw dołączyć poniższą instrukcję importu:

import ArcGIS.AppFramework.Authentication 1.0

Jako ilustracja tej funkcjonalności może służyć przykładowa aplikacja dostępna w aplikacji ArcGIS AppStudio lub w repozytorium GitHub udostępniającym przykładowe rozwiązania dla aplikacji AppStudio.

Aplikacja uwierzytelniania biometrycznego

Składnik BiometricAuthenticator obsługuje uwierzytelnianie za pomocą skanu odcisku palca na platformach iOS, macOS, Android i Windows, a także za pomocą funkcji Face ID na urządzeniach iPhone 10 i nowszych. Aby korzystać z tej funkcji, w używanej aplikacji musi być włączone Uwierzytelnianie biometryczne. Wyboru tej opcji dokonuje się w menu Ustawienia > Funkcje.

Aby korzystać z funkcji uwierzytelniania za pomocą odcisku palca, używane urządzenie musi posiadać wbudowany czujnik odcisku palca albo być wyposażone w przenośny czytnik, co jest warunkiem udostępnienia tej funkcji na urządzeniu, a odciski palca muszą być zarejestrowane na urządzeniu. Poniższy przykładowy kod wykorzystuje właściwości supported, activated i errorMessage w celu wyświetlenia informacji o możliwości korzystania z tej funkcjonalności. Jeśli aplikacja uwierzytelniania nie będzie mogła być użyta, zostanie wyświetlony komunikat o błędzie.

Text {
    id: supportCheck
    text: BiometricAuthenticator.supported ? "Fingerprint supported" : "Fingerprint not supported"
}
Text {
    id: activeCheck
    text: BiometricAuthenticator.activated ? "Fingerprint activated" : "Fingerprint not activated"
    anchors.top: supportCheck.bottom
}
Text {
    id: errormessage
    text: BiometricAuthenticator.errorMessage
    anchors.top: activeCheck.bottom
}

W komponencie BiometricAuthenticator istnieje metoda authenticate wyświetlającą natywne okno dialogowe uwierzytelniania za pomocą odcisku palca i właściwość message ustawiająca w oknie dialogowym komunikat dotyczący uwierzytelnienia. Aby korzystać z funkcji uwierzytelniania biometrycznego, musi być ustawiona właściwość message i należy wywołać metodę authenticate, mając świadomość, że właściwość message musi być ustawiona przed wywołaniem metody authenticate. Poniższy przykładowy kod ilustruje sposób użycia metody authenticate wraz z określonym komunikatem:

Component.onCompleted: {
    BiometricAuthenticator.message = "Authenticate to log into your account"
    BiometricAuthenticator.authenticate()
}

Komponent BiometricAuthenticator zawiera dwa sygnały wskazujące wynik procesu uwierzytelniania. Sygnał akceptacji jest wysyłany w sytuacji, gdy uwierzytelnienie przebiegło pomyślnie, a sygnał odrzucenia w przypadku niepowodzenia procedury uwierzytelniania jest emitowany wraz z informacją, czy powodem niepowodzenia był błąd, czy anulowanie operacji. Poniższy przykładowy kod wykorzystuje te sygnały do zwrócenia wyników skanowania dla wszystkich możliwych warunków niepowodzenia wraz z krótkim tekstem możliwym do odczytania przez użytkownika:

Text {
    id: status    anchors.top: errormessage.bottom
}
Connections {
    target: BiometricAuthenticator
    onAccepted: {
        status.text = "Success"
    }
    onRejected: {
        status.text = constructMessage(reason)    }
}
function constructMessage(reason) {
    var result = "";
    switch (reason)    {
    case 1:
        result = qsTr("Cancelled By User");
        break;
    case 2:
        result = qsTr("Invalid Credentials");
        break;
    case 3:
        result = qsTr("Not Configured");
        break;
    case 4:
        result = qsTr("User Fallback");
        break;
    case 5:
        result = qsTr("Permission Denied");
        break;
    case 6:
        result = qsTr("Biometric Not Supported");
        break;
    case 7:
        result = qsTr("Bad Capture");
        break;
    case 8:
        result = qsTr("Platform Not Supported");
        break;
    default:
        result = qsTr("Unknown");
    }
    return result;
}