簡體   English   中英

在 UWP 應用程序中安全存儲訪問令牌的位置?

[英]Where to store access token securely in UWP application?

本地存儲不是存儲令牌的正確位置。 但是這篇博文說 LocalCache 通常是正確的位置。 如果我使用 DPAPI 存儲在 LocalCache 中,這是否足夠安全?

PasswordVault 是存儲它的好地方嗎?

我怎樣才能安全地存儲令牌,以便在這個應用程序之外無法訪問令牌?

我肯定會建議在PasswordVault中存儲訪問令牌等機密信息,因為LocalSettings未加密,並且可以從AppData中應用程序的 package 文件夾輕松訪問。

盡管PasswordVault的 API 有點奇怪,但您仍然可以輕松地使用它來存儲令牌:

var passwordVault = new PasswordVault();
passwordVault.Add(new PasswordCredential("Resource", "UserName", accessToken));

在您的情況下,您很可能只關心訪問令牌,因此“資源”和“用戶名”可能只是任意常量。 檢索令牌也很容易:

//find credentials in the store            
PasswordCredential? credential = null;

try
{
   // Try to get an existing credential from the vault.
   credential = _passwordVault.Retrieve("Resource", "UserName");
}
catch (Exception)
{
   // When there is no matching resource an error occurs, which we ignore.
}
credential?.RetrievePassword();
return credential?.Password;

注意try..catch的使用。 這是因為如果找不到給定的資源/用戶名組合,保險庫就會拋出(當用戶手動刪除系統憑據管理器中的條目時甚至可能發生這種情況。

PasswordVault的另一個優點是憑據在設備之間同步(盡管此功能可能會在未來版本中消失)。

在 UWP 應用程序中安全存儲訪問令牌的位置?

通常,我們經常使用ApplicationData.LocalSettings class 存儲訪問令牌,將設置容器放置在本地應用程序數據存儲中。 您可以像下面這樣使用它。

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

// Create a simple setting.
localSettings.Values["accesstoken"] = token;

// Read data from a simple setting.
Object value = localSettings.Values["accesstoken"];

if (value == null)
{
    // No data.
}
else
{
    // Access data in value.
}

如果您想安全地存儲訪問令牌。 Windows 運行時提供PasswordVault class 來安全地存儲憑據。 有關更多信息,請參閱此文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM