Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak aplikace pro Windows můžou pomocí nástroje Credential Locker bezpečně ukládat a načítat přihlašovací údaje uživatele a spouštět je mezi zařízeními pomocí účtu Microsoft uživatele.
Rozhraní Windows Runtime API (WinRT) pro přístup k Credential Locker jsou součástí sady Windows Software Development Kit (SDK). Tato rozhraní API je možné používat ve WinUI i v jiných desktopových aplikacích, jako jsou WPF a WinForms. Další informace o používání rozhraní API WinRT v desktopové aplikaci pro Windows najdete v tématu Volání rozhraní API prostředí Windows Runtime v desktopových aplikacích.
Přehled ukázkového scénáře
Máte například aplikaci, která se připojuje ke službě pro přístup k chráněným prostředkům, jako jsou mediální soubory nebo sociální sítě. Vaše služba vyžaduje přihlašovací údaje pro každého uživatele. Do aplikace jste vytvořili uživatelské rozhraní, které získá uživatelské jméno a heslo pro uživatele, které se pak použije k přihlášení uživatele do služby. Pomocí rozhraní API nástroje Credential Locker můžete uložit uživatelské jméno a heslo pro uživatele a snadno ho načíst a přihlásit se automaticky při příštím otevření aplikace bez ohledu na to, na jakém zařízení je zapnuté.
Platnost uživatelských přihlašovacích údajů uložených vLockeru přihlašovacích údajů nevyprší , nejsou ovlivněny applicationData.RoamingStorageQuota a nebudou vymazány z důvodu nečinnosti, jako jsou tradiční roamingová data. V nástroji Credential Locker ale můžete uložit maximálně 20 přihlašovacích údajů na aplikaci.
Nástroj Credential Locker funguje u účtů domény trochu jinak. Pokud jsou přihlašovací údaje uložené s vaším účtem Microsoft a tento účet přidružíte k účtu domény (například k účtu, který používáte v práci), budou se vaše přihlašovací údaje na tento účet domény připojovat. Nové přihlašovací údaje přidané při přihlášení účtem domény se ale nebudou synchronizovat. Tím se zajistí, že privátní přihlašovací údaje pro doménu nebudou vystavené mimo doménu.
Ukládání přihlašovacích údajů uživatele
- Získejte odkaz na Credential Locker pomocí objektu PasswordVault z oboru názvů Windows.Security.Credentials .
- Vytvořte objekt PasswordCredential obsahující identifikátor aplikace, uživatelské jméno a heslo a předejte ho metodě PasswordVault.Add pro přidání přihlašovacích údajů dolockeru.
var vault = new Windows.Security.Credentials.PasswordVault();
vault.Add(new Windows.Security.Credentials.PasswordCredential(
"My App", username, password));
Načítání přihlašovacích údajů uživatele
Poté, co máte odkaz na objekt PasswordVault, máte několik možností načtení přihlašovacích údajů uživatele z Úložiště přihlašovacích údajů.
- Pomocí metody PasswordVault.RetrieveAll můžete načíst všechny přihlašovací údaje, které uživatel zadal pro vaši aplikaci v lockeru.
- Pokud znáte uživatelské jméno pro uložené přihlašovací údaje, můžete načíst všechny přihlašovací údaje pro toto uživatelské jméno pomocí metody PasswordVault.FindAllByUserName .
- Pokud znáte název prostředku pro uložené přihlašovací údaje, můžete načíst všechny přihlašovací údaje pro tento název prostředku pomocí metody PasswordVault.FindAllByResource .
- A konečně, pokud znáte uživatelské jméno i název prostředku přihlašovacích údajů, můžete načíst pouze toto přihlašovací údaje pomocí metody PasswordVault.Retrieve .
Podívejme se na příklad, ve kterém jsme globálně uložili název prostředku v aplikaci, a pokud pro ně najdeme přihlašovací údaje, přihlásíme uživatele automaticky. Pokud pro stejného uživatele najdeme více přihlašovacích údajů, požádáme uživatele, aby při přihlašování vybral výchozí přihlašovací údaje, které se mají použít.
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;
}
Odstranění přihlašovacích údajů uživatele
Odstranění přihlašovacích údajů uživatele v nástroji Credential Locker je také rychlý dvoustupňový proces.
- Získejte odkaz na Credential Locker pomocí objektu PasswordVault z oboru názvů Windows.Security.Credentials .
- Předejte přihlašovací údaje, které chcete odstranit, do metody PasswordVault.Remove .
var vault = new Windows.Security.Credentials.PasswordVault();
vault.Remove(new Windows.Security.Credentials.PasswordCredential(
"My App", username, password));
Osvědčené postupy
Pro ukládání hesel používejte pouze úložiště přihlašovacích údajů, a ne pro větší datové bloky.
Hesla uložte dolockeru přihlašovacích údajů jenom v případě, že jsou splněna následující kritéria:
- Uživatel se úspěšně přihlásil.
- Uživatel se rozhodl ukládat hesla.
Nikdy neukládejte přihlašovací údaje ve formátu prostého textu pomocí dat aplikace nebo nastavení roamingu.
Související obsah
Windows developer