ホーム > APEX_UTIL > STRONG_PASSWORD_CHECKプロシージャ
前へ |
次へ |
このプロシージャは、提示されたパスワードがOracle Application Expressサイト管理者によって定義されたパスワード強度要件を満たすかどうかに基づいて、Boolean 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);
パラメータ
表「STRONG_PASSWORD_CHECKパラメータ」に、STRONG_PASSWORD_CHECK
プロシージャで使用可能なパラメータを示します。
STRONG_PASSWORD_CHECKパラメータ
パラメータ | 説明 |
---|---|
|
現行の作業領域内のアカウントを識別するユーザー名 |
|
パスワードの強度ルールを基準にチェックするパスワード |
|
アカウントの現行のパスワード(「新しいパスワードは古いパスワードと異なること」というルールを適用する目的のみに使用されます) |
|
現行の作業領域名(「パスワードには作業領域名を含まないこと」というルールを適用する目的のみに使用されます) |
|
このAPIをコールする場合は |
|
パスワードが、最小の長さの要件を満たすかどうかに基づいて、 |
|
パスワードが「新しいパスワードは古いパスワードと異なること」という要件を満たすかどうかに基づいて、 |
|
パスワードが、アルファベットを1文字以上含むことという要件を満たすかどうかに基づいて、 |
|
パスワードが、数字を1文字以上含むことという要件を満たすかどうかに基づいて、 |
|
パスワードが、句読記号を1文字以上含むことという要件を満たすかどうかに基づいて、 |
|
パスワードが、大文字を1文字以上含むことという要件を満たすかどうかに基づいて、 |
|
パスワードが、小文字を1文字以上含むことという要件を満たすかどうかに基づいて、 |
|
パスワードが、ユーザー名を含まないことという要件を満たすかどうかに基づいて、 |
|
パスワードが、作業領域名を含まないことという要件を満たすかどうかに基づいて、 |
|
パスワードが、指定された単純な単語を含まないことという要件を満たすかどうかに基づいて、 |
|
パスワードが、パスワード履歴ルールに基づいて再利用できるかどうかに基づいて、 |
例
次の例に、STRONG_PASSWORD_CHECK
プロシージャを使用する方法を示します。このプロシージャは、ユーザーSOMEBODY
の新しいパスワードfoo
が、Oracle Application Expressのサイト管理者によって定義されたすべてのパスワードの強度要件を満たしていることをチェックします。いずれかのチェックが失敗した場合(関連するOUTパラメータがTRUE
を戻した場合)、この例では、関連メッセージが出力されます。たとえば、Oracle Application Expressのサイト管理者がパスワードには1つ以上の数字が必要であると定義した場合にパスワードfoo
がチェックされると、p_one_numeric_err
OUTパラメータによってTRUE
が戻され、「Password must contain at least one numeric character」というメッセージが出力されます。
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;