WMS Einstellungen: Passwörter

Im Umgang mit Passwörtern gibt es im WPF ein paar Punkte zu beachten. 

Ihre Einstellungen werden als string serialisiert in der WMS Datenbank gespeichert. Wie die Einstellungsdaten serialisiert / deserialisiert werden liegt an Ihrer Implementierung.
Sollte zu einer Einstellung ein Passwort notwendig sein, sorgen Sie dafür, dass das Passwort nicht im Klartext serialisiert wird!

PasswordBox

Damit der Anwender ein Passwort an der Oberfläche eintragen ist, ist eine PasswordBox notwendig..

Wie setze ich das Passwort für die PasswortBox?

Die Passwortbox erlaubt aus Sicherheitsgründen kein Binding auf die Eigenschaft im ViewModel. Daher ist das Passwort in der Codebehind-Datei (.xaml.cs) zu setzen.

Xaml-Datei: PasswortBox mit Namen
 <PasswordBox Name="PasswordBox" Grid.Row="2" Grid.Column="1" PasswordChanged="PasswordBox_PasswordChanged"/>


xaml.cs-Datei: Konstruktor des Einstellung-Controls
    public partial class MySettingControl: UserControl
    {
        public MySettingControl(string a_sSettings)
        {
            InitializeComponent();
            var oViewModel = new MySettingControlViewModel(a_sSettings);
            DataContext = oViewModel;


            //Passwortbox erlaubt keine Bindings, daher hier setzen.
            PasswordBox.Password = new NetworkCredential(string.Empty, oViewModel.Password).Password;
        }


Wie aktualisiere ich das Passwort in meinem ViewModel?

Um nun das Passwort im ViewModel zu aktualisieren, muss auf das PasswordChanged-Event der PasswordBox zurückgegriffen werden. Das Changed-Event implementieren Sie wiederum in der CodeBehind:

xaml.cs-Datei: PasswordChangedEvent
    public partial class MySettingControl: UserControl
    {

        private void PasswordBox_PasswordChanged(object sender, System.Windows.RoutedEventArgs e)
        {
            var oViewModel = DataContext as MySettingControlViewModel;
            if (oViewModel == null)
                return;

            oViewModel.Password = PasswordBox.SecurePassword;
        }


Passwort verschlüsseln / hashen

Geben Sie das Passwort nicht im Klartext an das WMS, sondern hashen oder verschlüsseln Sie es, beim Serialisieren Ihrer Einstellungsdaten

Beispiele (u.a. TDES):