Speichern von Anmeldeinformationen mithilfe des Schließfachs für Anmeldeinformationen (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]
Das Schließfach für Anmeldeinformationen vereinfacht das sichere Speichern und Abrufen von Benutzeranmeldeinformationen und ermöglicht das kostenlose Roaming von Benutzeranmeldeinformationen für das Microsoft-Konto des Benutzers.
Angenommen, Sie haben eine App, die eine Verbindung mit einem Dienst herstellt, um auf geschützte Dateien wie z. B. Mediendateien, soziale Netzwerke usw. zuzugreifen, und Ihr Dienst erfordert Anmeldeinformationen für jeden Benutzer. Also haben Sie UI in Ihre App integriert, die den Benutzernamen und das Kennwort für den Benutzer abruft; diese Informationen werden dann für die Anmeldung des Benutzers am Dienst verwendet. Alles funktioniert hervorragend.
Jetzt möchten Sie für Ihre Kunden noch einen Schritt weiter gehen und ihre Anmeldeinformationen sicher speichern, damit sie sich nicht bei jeder Verwendung Ihrer App erneut anmelden müssen. Hier kommt das Schließfach für Anmeldeinformationen zum Einsatz. Mit einigen einfachen Aufrufen der API des Schließfachs für Anmeldeinformationen können Sie den Benutzernamen und das Kennwort für den Benutzer speichern und diese Informationen leicht abrufen und den Benutzer anmelden, wenn er Ihre App das nächste Mal startet.
Sicherer Speicher
Der große Vorteil des Schließfach für Anmeldeinformationen für Ihre App besteht darin, dass die Benutzeranmeldeinformationen an einem sicheren Ort gespeichert werden und die Anmeldeinformationen bei der Speicherung auf einem Datenträger verschlüsselt werden. Natürlich könnten Sie Ihre Benutzeranmeldeinformationen auch in einer Datei im lokalen Speicher für Ihre App speichern, das Speichern von Benutzeranmeldeinformationen als Nur-Text stellt jedoch eine erhebliche Sicherheitslücke dar. Bei einer Beeinträchtigung des Systems eines Benutzers ist es leicht, auf den Benutzernamen und das Kennwort zuzugreifen und diese zu manipulieren. Wenn der Benutzername und das Kennwort im Schließfach für Anmeldeinformationen gespeichert werden, kann eine böswillige Quelle lediglich eine verschlüsselte Datei abrufen.
Servergespeicherte Anmeldeinformationen
Ein weiterer Vorteil, der Ihren Benutzern durch die Speicherung ihrer Benutzernamen und Kennwörtern im Schließfach für Anmeldeinformationen entsteht, besteht in der Serverspeicherung der Anmeldeinformationen, sodass diese mit dem entsprechenden Microsoft-Konto auf jedem vertrauenswürdigen Gerät genutzt werden können. Dies macht Ihre sichere App noch benutzerfreundlicher, da Benutzer von der App automatisch auf allen vertrauenswürdigen Geräten angemeldet werden können, auf denen Ihre App installiert und mit dem Microsoft-Konto des entsprechenden Benutzers verknüpft ist – ohne, dass der Benutzer erneut zur Eingabe der Anmeldeinformationen aufgefordert wird.
Die Funktionsweise für Domänenkonten ist etwas anders. Wenn für Ihr Microsoft-Konto Anmeldeinformationen gespeichert sind und Sie dieses Konto mit einem Domänenkonto (z. B. das Konto, das Sie bei der Arbeit nutzen) verknüpfen, wandern Ihre Anmeldeinformationen zu diesem Domänenkonto. Neue Anmeldeinformationen, die während einer Anmeldung mit dem Domänenkonto hinzugefügt werden, werden jedoch nicht servergespeichert. So wird sichergestellt, dass private Anmeldeinformationen für die Domäne nicht außerhalb der Domäne verfügbar gemacht werden.
Technologien
Anweisungen
Schritt 1: Speichern von Benutzeranmeldeinformationen
Das Speichern von Benutzeranmeldeinformationen im Schließfach für Anmeldeinformationen ist ein schneller Prozess mit zwei Schritten.
- Rufen Sie mithilfe des PasswordVault-Objekts aus dem Windows.Security.Credentials-Namespace einen Verweis auf das Schließfach für Anmeldeinformationen ab.
- Erstellen Sie ein PasswordCredential-Objekt, das einen Bezeichner für Ihre App, den Benutzernamen und das Kennwort enthält, und übergeben Sie sie an die PasswordVault.Add-Methode, um die Anmeldeinformationen dem Schließfach hinzuzufügen.
var vault = new Windows.Security.Credentials.PasswordVault();
vault.add(new Windows.Security.Credentials.PasswordCredential(
"My App", username, password));
Schritt 2: Abrufen von Benutzeranmeldeinformationen
Zum Abrufen von Benutzeranmeldeinformationen aus dem Schließfach für Anmeldeinformationen mithilfe eines Verweises auf das PasswordVault-Objekt stehen verschiedene Optionen zur Verfügung.
Mit der PasswordVault.RetrieveAll-Methode können Sie alle Anmeldeinformationen abrufen, die der Benutzer im Schließfach für Ihre App bereitgestellt hat.
Wenn Ihnen der Benutzername für die gespeicherten Anmeldeinformationen bekannt ist, können Sie mit der PasswordVault.FindAllByUserName-Methode alle Anmeldeinformationen für diesen Benutzernamen abrufen.
Wenn Ihnen der Ressourcenname für die gespeicherten Anmeldeinformationen bekannt ist, können Sie mit der PasswordVault.FindAllByResource-Methode alle Anmeldeinformationen für diesen Ressourcennamen abrufen.
Und wenn Ihnen sowohl der Benutzer- als auch der Ressourcenname für bestimmte Anmeldeinformationen bekannt ist, können Sie diese Anmeldeinformationen mithilfe der PasswordVault.Retrieve-Methode abrufen.
Sehen wir uns ein Beispiel an, in dem wir den Ressourcennamen global in einer App gespeichert haben und den Benutzer automatisch anmelden, wenn wir entsprechende Anmeldeinformationen finden. Sollten mehrere Anmeldeinformationen für einen Benutzer gefunden werden, wird der Benutzer dazu aufgefordert, Standardanmeldeinformationen für die Anmeldung auszuwählen.
var resourceName = "My App";
var defaultUserName;
function 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);
}
function GetCredentialFromLocker() {
var credential = null;
var vault = new Windows.Security.Credentials.PasswordVault();
var credentialList = vault.findAllByResource(resourceName);
if (credentialList.length > 0) {
if (credentialList.length == 1) {
credential = credentialList[0];
} else {
// When there are multiple usernames,
// retrieve the default username. If one doesn’t
// exist, display UI to have the user select
// a default username.
defaultUserName = getDefaultUserNameUI();
credential = vault.retrieve(resourceName, defaultUserName);
}
}
return credential;
}
Schritt 3: Löschen von Benutzeranmeldeinformationen
Das Löschen von Benutzeranmeldeinformationen im Schließfach für Anmeldeinformationen ist ebenfalls ein schneller Prozess mit zwei Schritten.
Rufen Sie mithilfe des PasswordVault-Objekts aus dem Windows.Security.Credentials-Namespace einen Verweis auf das Schließfach für Anmeldeinformationen ab.
Übergeben Sie die zu löschenden Anmeldeinformationen an die PasswordVault.Remove-Methode.
var vault = new Windows.Security.Credentials.PasswordVault();
vault.remove(new Windows.Security.Credentials.PasswordCredential(
"My App", username, password));
Anmerkungen
Wie sie sehen ist das Schließfach für Anmeldeinformationen ein leicht zu verwendendes Feature, das die Authentifizierung von Benutzern und das Speichern ihrer Benutzeranmeldeinformationen für die künftige Verwendung erleichtert – dabei wird stets eine hohe Sicherheit gewährleistet.
Bewährte Methoden
Verwenden Sie das Schließfach für Anmeldeinformationen nur für Kennwörter und nicht für größere Daten-BLOBs.
Speichern Sie Kennwörter nur unter den folgenden Bedingungen im Schließfach für Anmeldeinformationen:
- Der Benutzer hat sich erfolgreich angemeldet.
- Der Benutzer hat dem Speichern von Kennwörtern zugestimmt.
Verwandte Themen
Beispiel zum Schließfach für Anmeldeinformationen