Passwort aus Setting sicher speichern in Windows 8

Ich bin ein wenig verwundert wie wenig über das Thema Credentials lokal und sicher speichern geschrieben wird. Immerhin wird so gut wie jede Windows 8 Store APP auf eine Service zugreifen und die meisten werden das auch per Autorisierung absichern.

WinRT bietet eine API um auf den Betriebssystem eigenen Passwort Tresor zuzugreifen. Dort werden auch unter anderem die Usernamen/Passwort Kombinationen aus dem Internet Explorer abgelegt.

image

Für .NET hat Microsoft eine Klasse Passwortvault, die die WinRT API nutzt spendiert. (war auch ne Prüfungsfrage beim MCP)

Dim vault As Windows.Security.Credentials.PasswordVault = 
New Windows.Security.Credentials.PasswordVault() Dim pc = New PasswordCredential("aaaaaaa", Me.DataContext.username, Me.DataContext.Passwort) vault.Add(pc)

image

Die Daten sollen dann sicher abgelegt sein und können nur aus der ursprünglichen Anwendung ausgelesen werden. Der Zugriff erfolgt über den Resource Key. Meist ist das eine URL, hier einfach aaaaaaa. Da es mehr als eine Anmeldung pro URI geben kann, kommt da ne Liste. Wenn man die Zeile mit RetrievePasswort weglässt, ist in cred der Username gesetzt, aber das Password mit einem Leerstring besetzt.

Dim vault As Windows.Security.Credentials.PasswordVault = 
New Windows.Security.Credentials.PasswordVault() Dim x = New internalSettings Try Dim cred = vault.FindAllByResource("aaaaaaa").FirstOrDefault cred.RetrievePassword() x.Passwort = cred.Password x.UserName = cred.UserName catch End Try

Der managed Wrapper scheint etwas unfertig. Es ist nicht möglich auf die Existenz eines Resource Keys zu prüfen. Hier muss man über eine Exception gehen. Außerdem gibt es eine Properties Collection zu der man per Add etwas hinzufügen kann. Zur Laufzeit krachts dann aber. 

 Dim pc = New PasswordCredential("aaaaaaa", Me.DataContext.username, Me.DataContext.Passwort)
 pc.Properties.Add("ServiceUri", Me.DataContext.ServiceUri)
        
Kommentare sind geschlossen