Аутентификация

Среда AppStudio предоставляет плагин аутентификации, который проводит проверку подлинности пользователей посредством биометрической подписи на поддерживаемых устройствах. Вы можете этим пользоваться в связке с безопасным хранилищем для сохранения данных учётных записей, токенов и прочей конфиденциальной информации. Чтобы использовать эту функциональность, вы сначала должны включить следующие утверждения импорта:

import ArcGIS.AppFramework.Authentication 1.0

Пример подобного функционала см. в примере приложения, доступном в ArcGIS AppStudio или в репозитории образцов AppStudio на GitHub.

Биометрический аутентификатор

Компонент BiometricAuthenticator поддерживает аутентификацию по отпечатку пальца на платформах iOS, macOS, Android и Windows, а также face ID на iPhone 10 и более новых. Чтобы использовать эту функциональность, вам надо включить в приложении Биометрическую аутентификацию, что можно сделать через Настройки > Возможности.

Чтобы использовать аутентификацию по отпечатку пальца, устройство должно быть оборудовано встроенным сенсором отпечатков пальцев или использовать внешний сенсор, отпечатки пальцев должны быть уже введены в устройство. Этот пример кода использует свойства supported, activated и errorMessage для отображения, поддерживается ли эта функциональная возможность. Если аутентификатор использовать нельзя, появится сообщение об ошибке.

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
}

Компонент BiometricAuthenticator использует метод authenticate, который отображает системное диалоговое окно аутентификации по отпечатку, а также свойство message, которое задает сообщение об аутентификации в диалоговом окне. Чтобы использовать биометрическую аутентификацию, необходимо задать свойство message и вызвать метод authenticate, убедившись, что message настроен до вызова authenticate. Следующий пример кода показывает, как использовать метод authenticate вместе с указанным сообщением:

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

BiometricAuthenticator содержит два сигнала для показа результатов процесса аутентификации. Принимаемый сигнал испускается, когда аутентификация прошла успешно, а отклонённый сигнал испускается с объяснением, когда аутентификация завершилась неудачно из-за ошибки или отмены. В следующем примере кода эти сигналы используются для возврата результатов сканирования, при этом каждому возможному состоянию отказа даётся короткая строка, которую пользователь может прочитать:

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;
}