Armazenamento seguro

O AppFramework inclui um plugin Secure Storage QML, permitindo que aplicativos do AppStudio armazenem e acessem informações importantes como credenciais ou tokens. Com este plug-in, seus dados podem ser codificados e armazenados em um local fornecido pelo sistema com os dados somente acessíveis pelo seu aplicativo.

Nos dispositivos do Windows, estes valores são armazenados nos Cofres de Credenciais. No macOS e iOS, estes valores são armazenados no keychain do sistema. No Android, estes valores são armazenados no Android Keystore. No Linux, estes valores são armazenados em um arquivo keychain.ini em suas configurações de sistema.

Para utilizar esta funcionalidade, primeiro você precisa incluir a seguinte declaração de importação:

import ArcGIS.AppFramework.SecureStorage 1.0

Para obter um exemplo desta funcionalidade, consulte o aplicativo de amostra disponível em ArcGIS AppStudio ou no repositório de GitHub das amostras do AppStudio.

Armazenar valor de string

O componente de SecureStorage no plug-in é um singleton, significando que ele não precisa ser instanciado antes de ser utilizado. Este componente consiste de dois métodos, um que executa o armazenamento de valores e um que executa a recuperação de valores, como também, um sinal do onError.

O método setValue salva um par de valor-chave para armazenar. A seguinte amostra de código demonstra a funcionalidade do método, salvando um nome de usuário e senha para armazenar para uso posterior. O campo de senha também oculta a entrada fornecida, a menos que uma caixa de seleção adjacente seja marcada.

TextField {
    id: username
    placeholderText: "Username"
}

TextField {
    id: password
    placeholderText: "Password"
    anchors.left: username.right
    echoMode: passwordVisible.checked === true ? TextInput.Normal : TextInput.PasswordEchoOnEdit
}

CheckBox {
    id: passwordVisible
    anchors.left: password.right
}

Button {
    id: secureButton
    text: qsTr("Store Combination")
    anchors.top: username.bottom
    onClicked: {
        SecureStorage.setValue(username.text,password.text)
    }
}

Considere os seguintes comportamentos do método setValue ao utilizá-lo:

  • O comprimento máximo de uma chave ou um valor é baseado no seu sistema operacional. Estes podem ser verificados com as propriedades maximumKeyLength e maximumValueLength. Se a chave ou o valor que você pretende armazenar, ou uma combinação dos dois, for maior que o comprimento máximo, considere dividi-los antes de armazená-los separadamente.
  • A chave não pode ser nula ou vazia.
  • Se você utilizar a mesma chave duas vezes, o valor anterior associado com a chave será substituído.
  • Fornecer um valor vazio para uma chave pré-existente removerá a chave presente na série de chaves.
  • Os usuários do Android encontrarão uma exceção se determinados caracteres especiais, como uma barra (/), forem utilizados nas chaves.
  • Se o método value ou setValue falhar, o sinal onError é ativado.

Recuperar valor de string

O método value em SecureStorage é o único meio de acessar dados de string armazenados pelo seu aplicativo. Substituir o campo de nome de usuário no exemplo de código anterior pela versão modificada a seguir usará o método value para preencher automaticamente o campo de senha se o nome de usuário fornecido já estiver armazenado.

TextField {
    id: username
    placeholderText: "Username"

    onEditingFinished: {
        password.text = SecureStorage.value(username.text)
    }
}