Sdílet prostřednictvím


Xamarin.Essentials: Zabezpečené úložiště

Třída SecureStorage pomáhá bezpečně ukládat jednoduché páry klíč/hodnota.

Začínáme

Pokud chcete začít používat toto rozhraní API, přečtěte si úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

Pro přístup k funkci SecureStorage se vyžaduje následující nastavení specifické pro platformu:

Tip

Automatické zálohování pro aplikace je funkce Androidu 6.0 (rozhraní API úrovně 23) a novější, která zálohuje data aplikací uživatele (sdílené předvolby, soubory v interním úložišti aplikace a další konkrétní soubory). Data se obnoví, když se aplikace znovu nainstaluje nebo nainstaluje na nové zařízení. To může mít vliv na SecureStorage využití předvoleb sdílených složek, které se zálohují a nelze je při obnovení dešifrovat. Xamarin.Essentials tento případ automaticky zpracuje odebráním klíče, aby se mohl resetovat, ale můžete provést další krok zakázáním automatického zálohování.

Povolení nebo zakázání zálohování

Automatické zálohování pro celou aplikaci můžete zakázat nastavením android:allowBackup na false v AndroidManifest.xml souboru. Tento přístup se doporučuje pouze v případě, že plánujete obnovení dat jiným způsobem.

<manifest ... >
    ...
    <application android:allowBackup="false" ... >
        ...
    </application>
</manifest>

Selektivní zálohování

Automatické zálohování je možné nakonfigurovat tak, aby zakázalo zálohování konkrétního obsahu. Můžete vytvořit vlastní sadu pravidel pro vyloučení SecureStore položek z zálohování.

  1. android:fullBackupContent Nastavte atribut v AndroidManifest.xml:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. Vytvořte nový soubor XML s názvem auto_backup_rules.xml v adresáři Resources/xml pomocí akce sestavení AndroidResource. Potom nastavte následující obsah, který obsahuje všechny sdílené předvolby s výjimkou SecureStorage:

    <?xml version="1.0" encoding="utf-8"?>
    <full-backup-content>
        <include domain="sharedpref" path="."/>
        <exclude domain="sharedpref" path="${applicationId}.xamarinessentials.xml"/>
    </full-backup-content>
    

Použití zabezpečeného úložiště

Přidejte do Xamarin.Essentials předmětu odkaz:

using Xamarin.Essentials;

Uložení hodnoty pro daný klíč v zabezpečeném úložišti:

try
{
  await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

Načtení hodnoty ze zabezpečeného úložiště:

try
{
  var oauthToken = await SecureStorage.GetAsync("oauth_token");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

Poznámka:

Pokud k požadovanému klíči není přidružená žádná hodnota, GetAsync vrátí se null.

Pokud chcete odebrat konkrétní klíč, zavolejte:

SecureStorage.Remove("oauth_token");

Pokud chcete odebrat všechny klíče, zavolejte:

SecureStorage.RemoveAll();

Tip

Je možné, že při volání GetAsync nebo SetAsync. Příčinou může být to, že zařízení nepodporuje zabezpečené úložiště, změny šifrovacích klíčů nebo poškození dat. Nejlepší je to zvládnout odebráním a přidáním nastavení zpět, pokud je to možné.

Specifika implementace platformy

Úložiště klíčů Androidu slouží k uložení šifrovacího klíče použitého k šifrování hodnoty před uložením do sdílených předvoleb s názvem [YOUR-APP-PACKAGE-ID].xamarinessentials. Klíč (ne kryptografický klíč, klíč k hodnotě) použitý v souboru sdílených předvoleb je hodnota hash MD5 klíče předaného do SecureStorage rozhraní API.

Rozhraní API úrovně 23 a vyšší

Na novějších úrovních rozhraní API se klíč AES získá ze úložiště klíčů Androidu a použije se s šifrou AES/GCM/NoPadding k šifrování hodnoty před uložením do souboru sdílených předvoleb.

Rozhraní API úrovně 22 a nižší

Na starších úrovních rozhraní API podporuje úložiště klíčů Androidu pouze ukládání klíčů RSA , které se používají s šifrou RSA/ECB/PKCS1Padding k šifrování klíče AES (náhodně generovaného za běhu) a uložené v souboru sdílených předvoleb pod klíčem SecureStorageKey, pokud ještě nebyl vygenerován.

SecureStorage používá rozhraní API předvoleb a dodržuje stejnou trvalost dat popsanou v dokumentaci Předvolby . Pokud zařízení upgraduje z rozhraní API úrovně 22 nebo nižší na úroveň 23 nebo vyšší, bude tento typ šifrování nadále používán, pokud se aplikace neodinstaluje nebo se nevolá RemoveAll .

Omezení

Toto rozhraní API je určené k ukládání malých objemů textu. Pokud se ho pokusíte použít k ukládání velkého množství textu, může být výkon pomalý.

rozhraní API

Další videa o Xamarinu najdete na Channel 9 a YouTube.