ユーザーマネージャーのパスワード変更にて「生成」ボタンをクリックするとパスワードがランダムに生成されますが、場合によってはパスワードに含めたくない文字が出てくることもあると思います。
そのような場合に、特定の文字を含めないようにカスタマイズする方法についてお伝えします。
設定方法
①任意の場所に独自のGeneratePassword() を作成します。
既存のパスワードの生成ではSystem.Web.Security.SqlMembershipProvider.GeneratePassword( )メソッドが使用されていますが、カスタマイズに当たり独自のGeneratePassword()を作成する必要があります。
public static class CustomMembership
{
//numberOfNonAlphanumericCharacters:非英数字文字数
public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters)
{
//パスワードの長さと英数字以外の文字に基づきランダムに生成したパスワードを返す
}
}
②任意の場所に独自の SqlMembershipProvider を作成します。
System.Web.Security.SqlMembershipProviderを継承し、既存のSystem.Web.Security.Membership.GeneratePassword( ) メソッドをオーバーライドします
特定の文字を含めないようにカスタムした文字列を返す必要があるため、①で作成した独自のCustomMembership.GeneratePassword()メソッドを返す必要があります。
internal class CustomSQLMembershipProvider : System.Web.Security.SqlMembershipProvider
{
public override string GeneratePassword()
{
return CustomMembership.GeneratePassword(
(this.MinRequiredPasswordLength < 14) ? 14 : this.MinRequiredPasswordLength,
this.MinRequiredNonAlphanumericCharacters);
}
}
③C:\Inetpub\wwwroot\サイト\web.configに、②で作成した独自のSqlMembershipProviderを追加します。
<add name="sql" type="System.Web.Security.SqlMembershipProvider"… という記述を探して、複製します。
nameには任意の値、typeには名前空間を含めた独自のSqlMembershipProviderを設定します。
④C:\Inetpub\wwwroot\サイト\web.configで、独自のSQLProviderを使用するようにrealProviderNameを変更します。
<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider… という記述を探します。
realProviderNameを③でnameに設定した任意の値に書き替えてください。
上記設定後、ユーザーマネージャーにて「生成」ボタンを押して特定の文字が含まれていないパスワードが生成されるかテストを行い、完了です。
参考サイト : https://kirkegaard-at.blogspot.com/2014/06/alphanumeric-characters-in-generate-new.html
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。