iDempiere(アイデンピエレ)では、ユーザーがログイン時にパスワードの入力を複数回失敗したり、ある一定期間ログインしないと、アカウントをロックしログインできないようにするユーザーロック機能が実装されています。
目次
- ユーザーロックに関係するシステムコンフィグ設定
- USER_LOCKING_MAX_LOGIN_ATTEMPTの使用法
- USER_LOCKING_MAX_PASSWORD_AGE_DAYの使用法
- USER_LOCKING_MAX_INACTIVE_PERIOD_DAYの使用法
- USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTESの使用法
- 参考サイト
- 関連するコンテンツ
ユーザーロックに関係する設定は、システムコンフィグ設定(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 |
パスワードの有効期限を設定するのに使用します。有効期限が過ぎている場合は、ログイン時に新しいパスワードに設定し直すように促されます。 |
システムコンフィグ設定ウィンドウで、名称(Name)フィールドに定数
USER_LOCKING_MAX_LOGIN_ATTEMPTを設定し、検索キー(Value)フィールドに入力を間違えたらアカウントをロックする回数を設定します。
![USER_LOCKING_MAX_LOGIN_ATTEMPT](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i0b366d8a6ceacbaa/version/1374892161/user-locking-max-login-attempt.jpg)
上記のイメージの例では、3回間違えたらアカウントがロックされます。
ログイン画面でパスワードを間違えてみる。
ここではログイン画面で、わざとパスワードを間違えて入力してみます。
![ログイン画面(Swing版)](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/icd416d59055e882d/version/1374893787/%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2-swing%E7%89%88.jpg)
Swing版のログイン画面では、ログイン画面の左下に、パスワードを間違えた回数と、パスワードの入力が許容されている回数が表示されます。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i7e5b7ac8f57ad59f/version/1374894028/image.jpg)
パスワードの誤入力の許容回数に達っしてしまったのでアカウントがロックされました。
ロックされたユーザーは、AD_userテーブルのIsLockedフラグがONになります。
アカウントロックの解除方法
ログインできなくなったユーザーのアカウントを再度ログインできるようにするために、アカウントロックを解除するプロセスが用意されています。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i0775f62520dd3cd9/version/1374893255/image.jpg)
アカウントロックを解除するためには、アカウントロック解除(Reset Locked Account)プロセスを実行します。
クラス:org.adempiere.process.ResetLockedAccount
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i57cee3584b91dd2b/version/1374893386/image.jpg)
ロックを解除したいユーザーを選択し、開始ボタンを押すとロックが解除されます。
ユーザーを選択しないと、解除する条件に合致しているユーザー(※1)全員のロックが解除されてしまいますので注意が必要です。
※1:解除する条件に合致しているユーザーとはロックされてから、"USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES"で設定されている時間を超えており、ログインしていない期間が"USER_LOCKING_MAX_INACTIVE_PERIOD_DAY"で設定されている時間に達していないユーザーです。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i02d7fedfb4eb0d22/version/1374917321/image.jpg)
システムコンフィグ設定ウィンドウで、名称(Name)フィールドに定数USER_LOCKING_MAX_PASSWORD_AGE_DAYを設定し、検索キー(Value)フィールドにパスワードの有効期間を日数で設定します。0の場合は、この設定は有効になりません。
![USER_LOCKING_MAX_PASSWORD_AGE_DAY](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/ifbb3d007b7c4796f/version/1374892356/user-locking-max-password-age-day.jpg)
この設定を有効にするためには、ユーザーの設定でパスワードをリセットしない(IsNoPasswordReset)フラグがOFFになっている必要もあります。
パスワードの有効期間を過ぎてログインしようとすると、期限切れ(IsExpired)フラグがONになります。Swing-UIの場合はログイン画面の"パスワード変更(Change Password)"タブ、パスワードを再設定する事ができます。
![Swingログイン画面](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/iab7b46ef31d77ce8/version/1374913294/swing%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2.jpg)
古いパスワード(Old Passwrod)と新しいパスワード(New Password)に同じパスワードを入れたらエラーになりました。また、セキュリティー上の質問(Security Question)の選択と回答(Ansewer)は必須のようです。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i60dc0e6c4648ed2a/version/1374913512/image.jpg)
一定期間システムにログインしていないユーザーのアカウントをロックするのに使用します。
![USER_LOCKING_MAX_INACTIVE_PERIOD_DAY](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i4bd7e7debd66989b/version/1374892549/user-locking-max-inactive-period-day.jpg)
検索キー(Value)を0より大きい数値に設定し、その数値の日数以上ログインしないと、ログインしようとした時にアカウントロックされます。
![Swing-UIのログイン画面](https://image.jimcdn.com/app/cms/image/transf/dimension=490x10000:format=jpg/path/sfe3be30db12270da/image/i41e5f50fad943954/version/1374915610/swing-ui%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2.jpg)
ロックされたユーザーは、AD_userテーブルのIsLockedフラグがONになります。
一度アカウントロックされたユーザーは、アカウントロックの一括解除処理の、一定期間対象外になるように制御する事ができます。
設定を有効にするには0より大きい数値を検索キー(Value)に設定します。設定する数値は"分(Minutes)"です。例えば、60と設定すると、アカウントロックされたユーザーは、アカウントロックの一括解除処理の対象には60分間はならない事になります。※個別にユーザーを指定してアカウントロックを解除する事はできます。
![USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i3863cbfff20fce3f/version/1374892743/user-locking-max-account-lock-minutes.jpg)
アカウントロック解除プロセスを、ユーザーフィールドを選択せずじ実行すると、解除する条件に合致しているユーザー(※1)全員のロックを解除する一括解除処理になります。
![アカウントロック解除プロセス](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i3f530d72582ad248/version/1374916667/%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%83%AD%E3%83%83%E3%82%AF%E8%A7%A3%E9%99%A4%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9.jpg)
※1:解除する条件に合致しているユーザーとはロックされてから、"USER_LOCKING_MAX_ACCOUNT_LOCK_MINUTES"で設定されている時間を超えており、ログインしていない期間が"USER_LOCKING_MAX_INACTIVE_PERIOD_DAY"で設定されている時間に達していないユーザーです。
設定された期間をすぎると、ユーザーロックの一括解除処理でロックを解除する事ができます。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/id4b199b38c53cc35/version/1374916558/image.jpg)
緊急の場合は、ユーザーを選択して、アカウントロック解除プロセスを実行すれば、設定期間に関係なくロックを解除する事ができます。
- iDempiere Lab -> 標準業務機能 -> 共通操作 -> ログイン
- iDempeire Lab -> システム管理機能 -> システムコンフィグ(System Configurator)設定
- 【iDempiere Lab】ログイン情報の保存の制御(2013/10/13の研究日誌)
- 【iDempiere Lab】ログインパスワードを忘れた場合の処理(2013/10/12の研究日誌)
- 【iDempiere Lab】ログインの改善点(2013/7/29の研究日誌)
- 【iDempiere Lab】パスワードの暗号化について(2013/7/13の研究日誌)