I recently introduced the Xander.PasswordValidator project I’m working on in a previous blog post. In this post I intend to demonstrate some of the basics of how to use it.
At the most core is the
Validator class. It performs the validation of the password and returns a value to the caller to let them know if the validation passed or failed.
The validator can take settings set by the caller, or it can find settings in the application’s configuration file.
Here is a simple example of it working:
var settings = new PasswordValidationSettings(); settings.MinimumPasswordLength = 6; settings.NeedsLetter = true; settings.NeedsNumber = true; settings.StandardWordLists.Add(StandardWordList.MostCommon500Passwords); var validator = new Validator(settings); bool result = validator.Validate("MySuperSecretPassword");
First off, a settings class is created, then various options are set. If you don’t set any options then the validator allows any password.
In this example the settings mandate the a password must be at least 6 characters, it must have a letter and it must have a number, and it must not appear in the built in list of the most common 500 passwords.
Validator is created and passed the settings that we’ve prepared.
Validate method is called passing in the password that is to be validated. The result indicates whether the password passed or failed (in the example above, it failed as it does not contain a number).
Settings from the config file
If you prefer to have the settings for the validator in the config file then you can instantiate a Validator without passing anything to its constructor and it will use the settings in the config file instead.
It should go without saying that you should only put the settings in the config file in a secure environment.
To use settings in the config file you must set up a the section where the settings will go, and then create the section with the settings in it.
To define the section:
<!-- Set up other config sections here—>
<section name="rules" type="Xander.PasswordValidator.Config.PasswordValidationSection, Xander.PasswordValidator, Version=0.1.0.0, Culture=neutral, PublicKeyToken=fe72000dffcf195f" allowLocation="true" allowDefinition="Everywhere"/>
An example of the config section itself:
<!-- The configuration section that describes the configuration for the password validation --> <passwordValidation>
<rules minimumPasswordLength="6" needsNumber="false" needsLetter="false" needsSymbol="false">
<wordListProcessOptions checkForNumberSuffix="true" checkForDoubledUpWord="true" checkForReversedWord="true" />
<add file="WordLists/MyCustomWordList.txt" />
<add file="WordLists/MyOtherCustomWordList.txt" />
The above example uses most options available out of the box that can be put in the config file. It is worth noting that some options are only available from the settings in the code, such as being able to specify custom classes that handle parts of the validation.
Have a play
If you want to try this out for yourself the two assemblies are available here. I will be putting this on NuGet soon.