46.140 STRONG_PASSWORD_CHECKプロシージャ
このプロシージャは、提示されたパスワードがOracle APEXサイト管理者によって定義されたパスワード強度要件を満たすかどうかに基づいて、ブールのOUT
値を戻します。
構文
APEX_UTIL.STRONG_PASSWORD_CHECK (
p_username IN VARCHAR2,
p_password IN VARCHAR2,
p_old_password IN VARCHAR2,
p_workspace_name IN VARCHAR2,
p_use_strong_rules IN BOOLEAN,
p_min_length_err OUT BOOLEAN,
p_new_differs_by_err OUT BOOLEAN,
p_one_alpha_err OUT BOOLEAN,
p_one_numeric_err OUT BOOLEAN,
p_one_punctuation_err OUT BOOLEAN,
p_one_upper_err OUT BOOLEAN,
p_one_lower_err OUT BOOLEAN,
p_not_like_username_err OUT BOOLEAN,
p_not_like_workspace_name_err OUT BOOLEAN,
p_not_like_words_err OUT BOOLEAN,
p_not_reusable_err OUT BOOLEAN );
パラメータ
表46-119 STRONG_PASSWORD_CHECKのパラメータ
パラメータ | 説明 |
---|---|
p_username |
現行のワークスペース内のアカウントを識別するユーザー名 |
p_password |
パスワードの強度ルールを基準にチェックするパスワード |
p_old_password |
アカウントの現行のパスワード"新規パスワードと古いものは異なる必要があります"というルールを強制する目的のみに使用されます。 |
p_workspace_name |
現在のワークスペース名で、「パスワードにはワークスペース名を使用できません。」というルールを強制する目的のみに使用されます。 |
p_use_strong_rules |
このAPIをコールする場合はFALSE を渡します。
|
p_min_length_err |
パスワードが最小の長さの要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_new_differs_by_err
|
パスワードが"新規パスワードと古いものは異なる必要があります"という要件を満たすかどうかに応じて、TRUE またはFALSE の結果が戻ります。
|
p_one_alpha_err |
パスワードがアルファベットを1文字以上含むことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_one_numeric_err |
パスワードが数字を1文字以上含むことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_one_punctuation_err |
パスワードが句読記号を1文字以上含むことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_one_upper_err |
パスワードが大文字を1文字以上含むことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_one_lower_err |
パスワードが小文字を1文字以上含むことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_not_like_username_err |
パスワードがユーザー名を含まないことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_not_like_workspace_name_err
|
パスワードがワークスペース名を含まないことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_not_like_words_err |
パスワードが指定された単純な単語を含まないことという要件を満たすかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
p_not_reusable_err |
パスワードがパスワード履歴ルールに基づいて再利用できるかどうかに基づいて、TRUE またはFALSE の結果が戻ります
|
例
次の例では、ユーザーSOMEBODY
の新しいパスワードfoo
が、APEXサイト管理者によって定義されたすべてのパスワード強度要件を満たしていることをチェックします。いずれかのチェックが失敗した場合(関連するOUT
パラメータがTRUE
を戻した場合)、この例では、関連メッセージが出力されます。たとえば、APEXサイト管理者がパスワードには1つ以上の数字が必要であると定義した場合にパスワードfoo
がチェックされると、p_one_numeric_err OUT
パラメータはTRUE
を戻し、"パスワードには数字を1つ以上含める必要があります"というメッセージが出力されます。
DECLARE
l_username varchar2(30);
l_password varchar2(30);
l_old_password varchar2(30);
l_workspace_name varchar2(30);
l_min_length_err boolean;
l_new_differs_by_err boolean;
l_one_alpha_err boolean;
l_one_numeric_err boolean;
l_one_punctuation_err boolean;
l_one_upper_err boolean;
l_one_lower_err boolean;
l_not_like_username_err boolean;
l_not_like_workspace_name_err boolean;
l_not_like_words_err boolean;
l_not_reusable_err boolean;
l_password_history_days pls_integer;
BEGIN
l_username := 'SOMEBODY';
l_password := 'foo';
l_old_password := 'foo';
l_workspace_name := 'XYX_WS';
l_password_history_days :=
apex_instance_admin.get_parameter ('PASSWORD_HISTORY_DAYS');
APEX_UTIL.STRONG_PASSWORD_CHECK(
p_username => l_username,
p_password => l_password,
p_old_password => l_old_password,
p_workspace_name => l_workspace_name,
p_use_strong_rules => false,
p_min_length_err => l_min_length_err,
p_new_differs_by_err => l_new_differs_by_err,
p_one_alpha_err => l_one_alpha_err,
p_one_numeric_err => l_one_numeric_err,
p_one_punctuation_err => l_one_punctuation_err,
p_one_upper_err => l_one_upper_err,
p_one_lower_err => l_one_lower_err,
p_not_like_username_err => l_not_like_username_err,
p_not_like_workspace_name_err => l_not_like_workspace_name_err,
p_not_like_words_err => l_not_like_words_err,
p_not_reusable_err => l_not_reusable_err);
IF l_min_length_err THEN
htp.p('Password is too short');
END IF;
IF l_new_differs_by_err THEN
htp.p('Password is too similar to the old password');
END IF;
IF l_one_alpha_err THEN
htp.p('Password must contain at least one alphabetic character');
END IF;
IF l_one_numeric_err THEN
htp.p('Password must contain at least one numeric character');
END IF;
IF l_one_punctuation_err THEN
htp.p('Password must contain at least one punctuation character');
END IF;
IF l_one_upper_err THEN
htp.p('Password must contain at least one upper-case character');
END IF;
IF l_one_lower_err THEN
htp.p('Password must contain at least one lower-case character');
END IF;
IF l_not_like_username_err THEN
htp.p('Password may not contain the username');
END IF;
IF l_not_like_workspace_name_err THEN
htp.p('Password may not contain the workspace name');
END IF;
IF l_not_like_words_err THEN
htp.p('Password contains one or more prohibited common words');
END IF;
IF l_not_reusable_err THEN
htp.p('Password cannot be used because it has been used for the
account within the last '||l_password_history_days||' days.');
END IF;
END;
親トピック: APEX_UTIL