Nous développons une application Web qui utilise l'authentification par formulaires et ActiveDirectoryMembershipProvider pour authentifier les utilisateurs par rapport à Active Directory. Nous avons rapidement découvert que le fournisseur ne permettait pas de spécifier un mot de passe vide/vide, même si cela est parfaitement légal dans Active Directory (à condition qu'une politique de mot de passe préventive ne soit pas en place).Comment faire pour que ActiveDirectoryMembershipProvider accepte un mot de passe vide?
Avec l'aimable autorisation du réflecteur:
private void CheckPassword(string password, int maxSize, string paramName)
{
if (password == null)
{
throw new ArgumentNullException(paramName);
}
if (password.Trim().Length < 1)
{
throw new ArgumentException(SR.GetString("Parameter_can_not_be_empty", new object[] { paramName }), paramName);
}
if ((maxSize > 0) && (password.Length > maxSize))
{
throw new ArgumentException(SR.GetString("Parameter_too_long", new object[] { paramName, maxSize.ToString(CultureInfo.InvariantCulture) }), paramName);
}
}
À moins d'écrire notre propre fournisseur personnalisé, est-il possible de passer outre cette fonctionnalité en utilisant la magie de .NET?
Vous pouvez vous connecter aux partages de fichiers et mapper des lecteurs réseau, etc. avec un mot de passe vide/vide, il est pris en charge sur l'ensemble du forum, à l'exception de ActiveDirectoryMembershipProvider. Vous avez raison, il n'y a aucun moyen de contourner ce comportement spécifiquement sans créer une sous-classe. – fletcher