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í.
android:fullBackupContent
Nastavte atribut v AndroidManifest.xml:<application ... android:fullBackupContent="@xml/auto_backup_rules"> </application>
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ý.