パスワードの機能を忘れるためにsetpasswordを使用しようとしています。私は、次の複雑さを満たすランダムなパスワードを生成する必要がActive Directoryのパスワードポリシーの複雑さの要件を満たすランダムなパスワードをプログラムで生成する
public string SetPassWord(string userName, string randomPassword)
{
string result = string.Empty;
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName);
AdUser adUser = new AdUser();
if (user != null)
{
user.SetPassword(randomPassword);
result = "Success";
}
return result;
}
:2の連続した文字を超え
- ユーザーのアカウント名またはユーザーのフルネームの一部が含まれていない
- 少なくともう6文字の長さ
- 以下の4つのカテゴリのうちの3つの文字が含まれています。
- 英語の大文字の文字(ZスルーA)
- 英語の小文字の文字(Zスルー)
- ベース10個の数字(0〜9)
- 非アルファベット文字(例えば、!、$、#、%)パスワードが変更または作成されたとき
複雑さの要件が適用されます。
上記の要件を満たすinbuiltメソッドはありますか?私はランダムにパスワードを生成する以下の方法を使用しました:
string randomPassword = Membership.GeneratePassword(8, 0).Replace('<','!').Replace('>', '#');
私はパスワードを設定しようとしているときにエラーをスローします。上記の要件を達成するための検証メソッドまたは組み込みメソッドがある場合はそれを感謝します。
でそれを使用しているかを見ることができます。 – sln
それぞれのカテゴリーからランダムに1〜3のアイテムを生成し、それらをランダムにミックスすることができます。その後、それらを検証正規表現に通して実行してください。 IMO、検証正規表現はより困難です。そして、6から9の長さでは解体不能であろう。 – sln
これは、 'ユーザのアカウント名、または2つの連続する文字を超えるユーザのフルネームの部分を含んでいません.'では、別の正規表現またはプロセスが必要です。残りは1つの正規表現で検証することができます。 – sln