パスワード検証に関連付けられたインストレーションイグジットを上書きすることで、[パスワード変更] 画面のパスワード強度検証ルールをカスタマイズできます。
手順
-
移動先 .
-
ValidatePassword (デフォルトでは非アクティブ) と ValidatePasswordStronger (デフォルトではアクティブ、Helsinki リリース以降) を探します。
-
ValidatePasswordStronger スクリプト (以下を参照) は、正規表現を使用して ValidatePassword スクリプトを上書きするサンプルスクリプトです。パスワードは 8 文字以上で、数字を含め、大文字と小文字を組み合わせる必要があります。
gs.include("PrototypeServer");
var ValidatePasswordStronger = Class.create();
ValidatePasswordStronger.prototype = {
process : function() {
var user_password = request.getParameter("user_password");
var min_len = 8;
var rules = "Password must be at least " + min_len +
" characters long and contain a digit, an uppercase letter, and a lowercase letter.";
if (user_password.length() < min_len) {
gs.addErrorMessage("TOO SHORT: " + rules);
return false;
}
var digit_pattern = new RegExp("[0-9]", "g");
if (!digit_pattern.test(user_password)) {
gs.addErrorMessage("DIGIT MISSING: " + rules);
return false;
}
var upper_pattern = new RegExp("[A-Z]", "g");
if (!upper_pattern.test(user_password)) {
gs.addErrorMessage("UPPERCASE MISSING: " + rules);
return false;
}
var lower_pattern = new RegExp("[a-z]", "g");
if (!lower_pattern.test(user_password)) {
gs.addErrorMessage("LOWERCASE MISSING: " + rules);
return false;
}
return true; // password is OK
}
}
Class.create() で作成されたスクリプト変数は、インストレーションイグジットと同じ名前 (この例では「ValidatePasswordStronger」) にする必要があります。このスクリプトは、パスワードが受け入れ可能な場合は true を返し、パスワードを変更する必要がある場合は false を返す process() 関数を実装しています。gs.addErrorMessage 関数を使用すると、[パスワード変更] 画面でエラーメッセージを返すことができます。アクティブなフラグを確認してレコードを更新することで、インスタンスでこのインストレーションイグジットを試すことができます。変更が認識されるように、試行後に必ずキャッシュをクリアしてください。
また、これらのスクリプトを変更しても、デフォルトの ServiceNow の動作は変更されないことに注意してください。デフォルトでは、空のパスワードは引き続き禁止されています。また、パスワードフィールドとパスワード検証フィールドは一致している必要があります。
タスクの結果
テストするには、ユーザーレコードの [パスワードのリセットを強制] ボックスをオンにして、そのユーザーでログインします。ユーザーがパスワードを設定しようとすると、検証が行われます。管理者ユーザーがユーザーレコードのパスワードを直接更新する場合、検証は適用されません (管理者はパスワードフィールドに何でも入力できます)。
注: [パスワード変更] 画面は、Single Sign-on を使用せず、ローカル LDAP と統合されていない顧客にのみ適用されます。