2016-04-10 4 views
10

Was ist für eine UWP-App der empfohlene Mechanismus zum Speichern von Geheimnissen, die mit einer App bereitgestellt werden müssen, wie API-Schlüssel und geheime Token? Für benutzergenerierte Authentifizierungstoken macht PasswordVault Sinn, aber ich kann keine Möglichkeit sehen, diese als Teil der App-Bereitstellung festzulegen. Bis jetzt habe ich sie in die App eingebettet, die nicht "korrekt" oder sicher erscheint.Was ist der empfohlene Weg, API-Schlüssel und Geheimnisse in einer UWP-App zu speichern?

+0

Für Windows 8.1 habe ich DLL geschaffen, die die erforderlichen Informationen speichern würde und sie als Ressource hinzufügen. Jetzt planen Sie, Kryptographie zu verwenden und Daten in einer Datei zu speichern, die in der App entschlüsselt werden kann und auf die zugegriffen werden kann, so dass selbst wenn jemand aus dem lokalen Speicher auf die Datei zugreifen würde, sie nicht auf Daten zugreifen können. Obwohl Sie die Optionen 'Keycredential' und' Identity' erhalten, werden diese verwendet, sobald sich ein Benutzer anmeldet. – Jerin

+0

@Jerin Ich habe darüber nachgedacht, aber dann scheint es, als ob Sie das Problem einfach verschieben. Wie schützen Sie Ihren Entschlüsselungsschlüssel? – dkackman

+0

Der Entschlüsselungsschlüssel würde als Konstante in Ihrem Code oder als DLL-Ressource hinzugefügt werden. Wenn jemand Ihren Code nicht hackt, kann er die verwendete Verschlüsselung und den Entschlüsselungsschlüssel nicht finden. – Jerin

Antwort

1

Sie PasswordCredential api verwenden können, Code-Schnipsel:

string CredentialsName = "testing"; 
private PasswordCredential GetCredentialFromLocker() 
{ 
    PasswordCredential credential = null; 

    var vault = new PasswordVault(); 
    IReadOnlyList<PasswordCredential> credentialList = null; 
    try 
    { 
     credentialList = vault.FindAllByUserName(Username); 
    } 
    catch 
    { 
     return credential; 
    } 
    if (credentialList.Count > 0) 
    { 
     credential = credentialList[0]; 
    } 

    return credential; 
} 

public void CreatePassword(string password, string username) 
{ 
    var vault = new PasswordVault(); 
    vault.Add(new PasswordCredential(CredentialsName, username, password)); 

} 
Verwandte Themen