Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan használhatják a Windows-alkalmazások a hitelesítő adatokat tároló szekrényt a felhasználói hitelesítő adatok biztonságos tárolására és lekérésére, valamint a felhasználó Microsoft-fiókjával rendelkező eszközök közötti vándorlásra.
A Hitelesítő adatok tárolására szolgáló Windows Futtatókörnyezet (WinRT) API-k a Windows Software Development Kit (SDK) részét képezik. Ezek az API-k a WinUI-ban és más asztali alkalmazásokban, például a WPF-ben és a WinForm-ban is használhatók. A WinRT API-k windowsos asztali alkalmazásban való használatáról további információt a Windows futtatókörnyezeti API-k meghívása asztali alkalmazásokban című témakörben talál.
A mintaforgatókönyv áttekintése
Rendelkezik például egy olyan alkalmazással, amely egy szolgáltatáshoz csatlakozik, hogy hozzáférjen a védett erőforrásokhoz, például médiafájlokhoz vagy közösségi hálózatokhoz. A szolgáltatáshoz minden felhasználó bejelentkezési adatai szükségesek. Olyan felhasználói felületet épített be az alkalmazásba, amely lekéri a felhasználó felhasználónevét és jelszavát, amelyet aztán a felhasználó a szolgáltatásba való bejelentkezéshez használ. A Credential Locker API használatával tárolhatja a felhasználó felhasználónevét és jelszavát, és egyszerűen lekérheti őket, és automatikusan bejelentkeztetheti a felhasználót az alkalmazás következő megnyitásakor, függetlenül attól, hogy milyen eszközön van.
A hitelesítő adatok tárolójában tárolt felhasználói hitelesítő adatok nem járnak le, az ApplicationData.RoamingStorageQuotanem érinti őket, és a hagyományos roamingadatokhoz hasonló inaktivitás miatt nem törlődnek. Alkalmazásonként azonban legfeljebb 20 hitelesítő adatot tárolhat a Hitelesítő adatok tárolójában.
A hitelesítő adatok tárolója egy kicsit másképp működik a tartományi fiókok esetében. Ha vannak a Microsoft-fiókjában tárolt hitelesítő adatok, és ezt a fiókot egy tartományi fiókkal (például a munkahelyén használt fiókkal) társítja, a hitelesítő adatai erre a tartományi fiókra fognak áttérni. A tartományi fiókkal való bejelentkezéskor hozzáadott új hitelesítő adatok azonban nem lesznek elérhetők. Ez biztosítja, hogy a tartományhoz tartozó személyes hitelesítő adatok ne lesznek elérhetők a tartományon kívül.
Felhasználói hitelesítő adatok tárolása
- Szerezze be a Hitelesítő adatok tárolóra mutató hivatkozást a PasswordVault objektummal a Windows.Security.Credentials névtérből.
- Hozzon létre egy PasswordCredential objektumot, amely tartalmazza az alkalmazás azonosítóját, a felhasználónevet és a jelszót, majd adja át a PasswordVault.Add metódusnak, amellyel hozzáadhatja a hitelesítő adatokat a szekrényhez.
var vault = new Windows.Security.Credentials.PasswordVault();
vault.Add(new Windows.Security.Credentials.PasswordCredential(
"My App", username, password));
Felhasználói hitelesítő adatok lekérése
A PasswordVault objektumra való hivatkozás után számos lehetősége van a felhasználói hitelesítő adatok lekérésére a hitelesítő adatok tárolójából.
- A PasswordVault.RetrieveAll metódussal lekérheti a felhasználó által az alkalmazáshoz megadott összes hitelesítő adatot a szekrényben.
- Ha ismeri a tárolt hitelesítő adatok felhasználónevét, a PasswordVault.FindAllByUserName metódussal lekérheti a felhasználónévhez tartozó összes hitelesítő adatot.
- Ha ismeri a tárolt hitelesítő adatok erőforrásnevét, a PasswordVault.FindAllByResource metódussal lekérheti az adott erőforrásnévhez tartozó összes hitelesítő adatot.
- Végül, ha ismeri a hitelesítő adatok felhasználónevét és erőforrásnevét is, a PasswordVault.Retrieve metódussal csak ezt a hitelesítő adatot kérheti le.
Nézzünk meg egy példát, amelyben globálisan tároltuk az erőforrás nevét egy alkalmazásban, és automatikusan bejelentkeztetjük a felhasználót, ha találunk nekik hitelesítő adatokat. Ha több hitelesítő adatot találunk ugyanahhoz a felhasználóhoz, megkérjük a felhasználót, hogy válasszon ki egy alapértelmezett hitelesítő adatot, amelyet a bejelentkezéskor használni szeretne.
private string resourceName = "My App";
private string defaultUserName;
private void Login()
{
var loginCredential = GetCredentialFromLocker();
if (loginCredential != null)
{
// There is a credential stored in the locker.
// Populate the Password property of the credential
// for automatic login.
loginCredential.RetrievePassword();
}
else
{
// There is no credential stored in the locker.
// Display UI to get user credentials.
loginCredential = GetLoginCredentialUI();
}
// Log the user in.
ServerLogin(loginCredential.UserName, loginCredential.Password);
}
private Windows.Security.Credentials.PasswordCredential GetCredentialFromLocker()
{
Windows.Security.Credentials.PasswordCredential credential = null;
var vault = new Windows.Security.Credentials.PasswordVault();
IReadOnlyList<PasswordCredential> credentialList = null;
try
{
credentialList = vault.FindAllByResource(resourceName);
}
catch(Exception)
{
return null;
}
if (credentialList.Count > 0)
{
if (credentialList.Count == 1)
{
credential = credentialList[0];
}
else
{
// When there are multiple usernames,
// retrieve the default username. If one doesn't
// exist, then display UI to have the user select
// a default username.
defaultUserName = GetDefaultUserNameUI();
credential = vault.Retrieve(resourceName, defaultUserName);
}
}
return credential;
}
Felhasználói hitelesítő adatok törlése
A hitelesítő adatok törlése a Hitelesítő Adattárban szintén gyors, kétlépéses folyamat.
- Szerezze be a Hitelesítő adatok tárolóra mutató hivatkozást a PasswordVault objektummal a Windows.Security.Credentials névtérből.
- Adja meg a törölni kívánt hitelesítő adatot a PasswordVault.Remove metódusnak.
var vault = new Windows.Security.Credentials.PasswordVault();
vault.Remove(new Windows.Security.Credentials.PasswordCredential(
"My App", username, password));
Bevált gyakorlatok
Csak a hitelesítőadat-tárolót használja jelszavakhoz, nagyobb adatblobokhoz nem.
Csak akkor mentse a jelszavakat a hitelesítőadat-tárolóba, ha az alábbi feltételek teljesülnek:
- A felhasználó sikeresen bejelentkezett.
- A felhasználó a jelszavak mentését választotta.
Soha ne tároljon hitelesítő adatokat egyszerű szöveges formátumban alkalmazásadatok vagy roamingbeállítások használatával.
Kapcsolódó tartalom
Windows developer