/// <summary>
 /// Called each time a request principal has been validated by the middleware. By implementing this method the
 /// application have alter or reject the principal which has arrived with the request.
 /// </summary>
 /// <param name="context">
 /// Contains information about the login session as well as the user name and provide password.
 /// </param>
 /// <returns>
 /// A <see cref="Task"/> representing the completed operation.
 /// </returns>
 public virtual Task ValidatePrincipalAsync(ValidatePrincipalContext context) => this.OnValidatePrincipal(context);
 /// <summary>
 /// Called each time a request principal has been validated by the middleware. By implementing this method the
 /// application have alter or reject the principal which has arrived with the request.
 /// </summary>
 /// <param name="context">
 /// Contains information about the login session as well as the user name and provide password.
 /// </param>
 /// <returns>
 /// A <see cref="Task"/> representing the completed operation.
 /// </returns>
 public virtual Task <AuthenticateResult> ValidatePrincipal(ValidatePrincipalContext context) => this.OnValidatePrincipal(context);