【iDempiere Lab】ユーザーロック

 iDempiere(アイデンピエレ)では、ユーザーがログイン時にパスワードの入力を複数回失敗したり、ある一定期間ログインしないと、アカウントをロックしログインできないようにするユーザーロック機能が実装されています。

ユーザーロックに関係するシステムコンフィグ設定

 ユーザーロックに関係する設定は、システムコンフィグ設定(System Configurator)ウィンドウで行います。システムコンフィグ設定ウィンドウで設定する、ユーザーロックに関係する設定には次の4つの定数を使用します。

定数(Name) 説明

USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES

 一度ロックしたユーザーは、一定期間一括解除の対象外にしてロックしておきたい場合に使用します。

USER_LOCKING_MAX_INACTIVE_PERIOD_DAY

 一定期間システムにログインしていないユーザーをロックするのに使用します。

USER_LOCKING_MAX_LOGIN_ATTEMPT

 ログイン時にある回数パスワードの入力を間違えたらユーザーをロックするのに使用します。

USER_LOCKING_MAX_PASSWORD_AGE_DAY

 パスワードの有効期限を設定するのに使用します。有効期限が過ぎている場合は、ログイン時に新しいパスワードに設定し直すように促されます。

USER_LOCKING_MAX_LOGIN_ATTEMPTの使用法

 システムコンフィグ設定ウィンドウで、名称(Name)フィールドに定数

USER_LOCKING_MAX_LOGIN_ATTEMPTを設定し、検索キー(Value)フィールドに入力を間違えたらアカウントをロックする回数を設定します。

USER_LOCKING_MAX_LOGIN_ATTEMPT
USER_LOCKING_MAX_LOGIN_ATTEMPT

 上記のイメージの例では、3回間違えたらアカウントがロックされます。

 

ログイン画面でパスワードを間違えてみる。

 ここではログイン画面で、わざとパスワードを間違えて入力してみます。

ログイン画面(Swing版)
ログイン画面(Swing版)

 Swing版のログイン画面では、ログイン画面の左下に、パスワードを間違えた回数と、パスワードの入力が許容されている回数が表示されます。

 パスワードの誤入力の許容回数に達っしてしまったのでアカウントがロックされました。

ユーザーウィンドウ
ユーザーウィンドウ

 ロックされたユーザーは、AD_userテーブルのIsLockedフラグがONになります。

 

アカウントロックの解除方法

 ログインできなくなったユーザーのアカウントを再度ログインできるようにするために、アカウントロックを解除するプロセスが用意されています。

 アカウントロックを解除するためには、アカウントロック解除(Reset Locked Account)プロセスを実行します。

 

 クラス:org.adempiere.process.ResetLockedAccount

 ロックを解除したいユーザーを選択し、開始ボタンを押すとロックが解除されます。

 ユーザーを選択しないと、解除する条件に合致しているユーザー(※1)全員のロックが解除されてしまいますので注意が必要です。

※1:解除する条件に合致しているユーザーとはロックされてから、"USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES"で設定されている時間を超えており、ログインしていない期間が"USER_LOCKING_MAX_INACTIVE_PERIOD_DAY"で設定されている時間に達していないユーザーです。

USER_LOCKING_MAX_PASSWORD_AGE_DAYの使用法

 システムコンフィグ設定ウィンドウで、名称(Name)フィールドに定数USER_LOCKING_MAX_PASSWORD_AGE_DAYを設定し、検索キー(Value)フィールドにパスワードの有効期間を日数で設定します。0の場合は、この設定は有効になりません。

USER_LOCKING_MAX_PASSWORD_AGE_DAY
USER_LOCKING_MAX_PASSWORD_AGE_DAY

 この設定を有効にするためには、ユーザーの設定でパスワードをリセットしない(IsNoPasswordReset)フラグがOFFになっている必要もあります。

ユーザーウィンドウ
ユーザーウィンドウ

 パスワードの有効期間を過ぎてログインしようとすると、期限切れ(IsExpired)フラグがONになります。Swing-UIの場合はログイン画面の"パスワード変更(Change Password)"タブ、パスワードを再設定する事ができます。

Swingログイン画面
Swingログイン画面

 古いパスワード(Old Passwrod)と新しいパスワード(New Password)に同じパスワードを入れたらエラーになりました。また、セキュリティー上の質問(Security Question)の選択と回答(Ansewer)は必須のようです。

USER_LOCKING_MAX_INACTIVE_PERIOD_DAYの使用法

 一定期間システムにログインしていないユーザーのアカウントをロックするのに使用します。

USER_LOCKING_MAX_INACTIVE_PERIOD_DAY
USER_LOCKING_MAX_INACTIVE_PERIOD_DAY

 検索キー(Value)を0より大きい数値に設定し、その数値の日数以上ログインしないと、ログインしようとした時にアカウントロックされます。

Swing-UIのログイン画面
Swing-UIのログイン画面

 ロックされたユーザーは、AD_userテーブルのIsLockedフラグがONになります。

 

USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTESの使用法

 一度アカウントロックされたユーザーは、アカウントロックの一括解除処理の、一定期間対象外になるように制御する事ができます。

 設定を有効にするには0より大きい数値を検索キー(Value)に設定します。設定する数値は"分(Minutes)"です。例えば、60と設定すると、アカウントロックされたユーザーは、アカウントロックの一括解除処理の対象には60分間はならない事になります。※個別にユーザーを指定してアカウントロックを解除する事はできます。

USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES
USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES

 アカウントロック解除プロセスを、ユーザーフィールドを選択せずじ実行すると、解除する条件に合致しているユーザー(※1)全員のロックを解除する一括解除処理になります。

アカウントロック解除プロセス
アカウントロック解除プロセス

※1:解除する条件に合致しているユーザーとはロックされてから、"USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES"で設定されている時間を超えており、ログインしていない期間が"USER_LOCKING_MAX_INACTIVE_PERIOD_DAY"で設定されている時間に達していないユーザーです。

 

設定された期間をすぎると、ユーザーロックの一括解除処理でロックを解除する事ができます。

 緊急の場合は、ユーザーを選択して、アカウントロック解除プロセスを実行すれば、設定期間に関係なくロックを解除する事ができます。

参考サイト

関連するコンテンツ