パスワード検証ルールの強化

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む3読むのに数分
  • パスワード検証に関連付けられたインストレーションイグジットを上書きすることで、[パスワード変更] 画面のパスワード強度検証ルールをカスタマイズできます。

    始める前に

    必要なロール:管理者

    手順

    1. 移動先 すべて > システム定義 > インストレーションイグジット.
    2. ValidatePassword (デフォルトでは非アクティブ) と ValidatePasswordStronger (デフォルトではアクティブ、Helsinki リリース以降) を探します。
    3. 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 と統合されていない顧客にのみ適用されます。