パスワードリマインダ
最終更新日: 2021年3月1日
R8 | R9
この機能を有効にすると、ログオン画面に「※ パスワードを忘れた方はこちら」というリンクが表示されるようになります。
このリンクを押下すると、図2の画面が表示されます。
パスワード再設定を行うログオンアカウントを入力し、「送信する」ボタンを押下します。
ログオンアカウントに紐づいたメールアドレスに、パスワードを再設定するための URL が記載されたメールが送信されます。セキュリティの観点から、このURLは1時間だけ有効となっています。
メール文面は次のようになっています。
メール到着後、文中に記載されたURLのページを開きます。図5のような画面が表示されます。
新しいパスワードを再設定します。
この手順により、ログオンアカウントのパスワードが初期化されます。アカウントがロックされていた場合、ロックも解除されます。
この機能によるセキュリティ上の問題点と、その対策方法は次のとおりです。
これらのシステム的な対策と並行して、利用者には「パスワードリセット詐欺」という攻撃が存在することも伝え、セキュリティ向上の教育を実施されることを推奨します。
具体的にはメールの差出人および、クリックするURLが正しいことを目視で確認することがあげられます。
環境メニューから、「アプリケーション>パスワードリマインダ」を開きます。「パスワードリマインダ機能を使用する」の欄に "USE" と記載するとともに、「差出人」の欄に適切なメールアドレスを入力します。
(利用者は差出人のメールアドレスを見て、届いたメールが妥当なものか、それとも疑わしいメールなのかを判断します。一般的にはシステム管理者につながるメールアドレスを指定するとよいでしょう。)
「本文」は自由に編集できます。文中の例にあるように、${username} などの表記が利用できます。
パスワードリマインダ機能はメール送信処理を行うため、同じ環境設定の「メール」タブにて、メールホスト名を設定してください。
ご利用のメールホストがポート番号、プロトコル、SMTP認証などを設定する必要がある場合、「メール設定(送信)」欄を適切に記載してください。どのような値を設定するかは、貴社ネットワーク管理者にお尋ねください。
パスワードリマインダ機能が有効になっているとき、各利用者の「プレファレンス」設定画面にて本機能を利用するかどうかを設定する欄が用意されます。
ここで「パスワードリマインダ」を「利用する」とし、かつ、入力フィールドにメールアドレスを指定することで、この利用者のログオンアカウントが、本機能を利用できるようになります。
メールアドレスの記載がない場合、本機能はご利用いただけません。
次のような場合は、こちらの方法をご利用されることを推奨します。
この場合、すでに管理しているメールアドレス情報をパスワードリマインダ機能でも利用することができます。
「パスワードリマインダ機能を使用する」の欄に "USESQL" と記載します。
環境設定の「メール」タブにて、メールホスト名を設定します。
「どのようなSQLを使ってメールアドレスを取得するか」を設定します。
wagbydesigner\bin\webpage\WEB-INF\src\jfcbase.properties を customize\resources\myjfcbase.properties としてコピーします。
テキストエディタ(Windows OS に付属のメモ帳は使用不可です。その他のテキストエディタをご利用ください。)を用いて、コピーした myjfcbase.properties ファイルを編集します。
このファイル中に、次のような記載があります。
"case 1" というエントリが「1. Wagbyが提供するアカウント定義(juser)の拡張」に対応します。この場合、case 1 以下の行について最初のセミコロン (;) を除去し、この設定を有効にします。
その上で、必要に応じてこのSQLを書き換えてください。
利用イメージ
*** 様(ユーザ名:***)
パスワード再設定のリクエストをお受け致しました。
以下のURLからパスワードの再設定を行って下さい。
http://YOURDOMAIN/wagby/setNewPassword.do?id=****
※このURLは2014年08月01日 10時xx分xx秒まで有効です。
**************************************************
なお、この内容にお心当たりの無い場合は、他の方が
メールアドレスを間違えて入力した可能性があります。
その場合、このメールは削除していただけますよう、
お願い申し上げます。
**************************************************
セキュリティ上の問題と対策
定義方法
パスワードリマインダの設定
表記方法
説明
メール文中に展開される文字列の例
${username}
ログオンアカウント
yamada
${userid}
ユーザー名
山田
${url}
パスワード変更用として一時的に用意されたURL
http://localhost:8921/wagby/setNewPassword.do?id=...
${host}
urlのホスト部分
http://localhost:8921/wagby/
${path}
urlのホスト部から右側の部分
setNewPassword.do?id=...
${limitdate}
パスワード変更用URLの有効期限
2014年09月01日 18時00分00秒
メールサーバの設定
メールアドレスを利用者に設定させる場合
注意
システム内部でログオンアカウントに紐づくメールアドレスを保持している場合
定義方法
jfcbase.propertiesの設定
; jp/jasminesoft/jfc/HibernateUserInfo.java:
; HQL query
;
; case 1 : juser model
;jp.jasminesoft.jfc.HibernateUserInfo.getEmailByUserid.query=\
; select c.email_ from jp.jasminesoft.jfc.model.juser.Juser as c where c.userid_ = :userid
;
; case 2 : staff model related to juser
;jp.jasminesoft.jfc.HibernateUserInfo.getEmailByUserid.query=\
; select c.mailaddress_ from jp.jasminesoft.wagby.model.staff.Staff as c where c.userid_ = :userid
jp.jasminesoft.jfc.HibernateUserInfo.getEmailByUserid.query=\
select c.email_ from jp.jasminesoft.jfc.model.juser.Juser as c where c.userid_ = :userid
具体的には select c.email_ ... の "email" 部に、定義ファイル上のメールアドレス項目名(英語)が入ります。
"case 2" というエントリが「2. ログオンアカウントを主キーとする別モデルを定義する」に対応します。この場合、case 2 以下の行について最初のセミコロン (;) を除去し、この設定を有効にします。
jp.jasminesoft.jfc.HibernateUserInfo.getEmailByUserid.query=\
select c.mailaddress_ from jp.jasminesoft.wagby.model.staff.Staff as c where c.userid_ = :userid
その上で、必要に応じてこのSQLを書き換えてください。具体的には select c.mailaddress_ ... の "mailaddress" 部に、定義ファイル上のメールアドレス項目名(英語)が入ります。from 句にあるモデル名(この例では Staff)も適切に修正してください。
注意
case 1 と case 2 は、どちらか一方の指定のみを有効にしてください。両方を有効にすることはできません。
今回の修正 *以外* のエントリは削除します。myjfcbase.properties ファイルはビルド時に元のファイルと自動マージされます。(削除した部分は、元のファイル jfcbase.properties の値が使われます。つまり myjfcbase.properties には、元のファイルとの差分情報だけを記述します。)
修正したファイルを保存し、フルビルドを行ってください。
利用者によっては別のメールアドレスを指定したい
上記のようにシステム内部で保持しているメールアドレスを利用する設定を行った場合でも、利用者が個別に「プレファレンス」画面から別のメールアドレスを入力することができます。この場合、プレファレンス画面の設定が優先されます。
パスワードリマインダ機能のためのメールアドレスを一括で登録したい
juser モデルや staff モデルなどに USESQL で参照されるメールアドレス項目を定義すれば、管理者がデータをCSVアップロード更新機能を用いて一括登録することが可能になります。
この場合でも、ユーザがプレファレンス画面でメールアドレスを指定すれば、そちらが優先されます。
パスワードリマインダ機能の利用制御
環境メニュー内の「カスタマイズ>プレファレンス」で、パスワードリマインダに関する「ユーザによる切り替えの可否」を指定することができます。
図12の設定による挙動の違いは次のとおりです。
ユーザ設定変更可能が「可」の場合
アプリケーションの「プレファレンス」(このページにある図9)で「パスワードリマインダ」を「利用する」とした場合は、その設定を優先します。
「利用しない」とした場合は、定義ファイルの「初期値」を優先します。
ユーザ設定変更可能が「不可」の場合
図11の初期値が「利用する」となっていた場合、本機能を利用します。
図11の初期値が「利用しない」となっていた場合、本機能を利用しません。
オートスケール環境での動作
オートスケール/クラスタ環境では、このリマインダ情報を jfcreminder テーブルに格納します。(非オートスケール/クラスタ環境では、サーバのメモリで管理します。)
この jfcreminder テーブルは内部利用に限定されるため、Wagbyのモデルとしては定義されません。次の性質をもちます。
- オートスケール/クラスタ設定が有効な場合にのみ、作成される。
- juserモデルのインポート処理時にあわせて、このテーブルがdrop&createされる。
- Wagbyのインポート・エクスポート画面では、このモデルは表示されない。
よくある質問と回答
パスワードリマインダ機能を利用する/しない自体の設定を一括で指定できますか
できません。ユーザ自身がオプトインで機能を有効にするという設計思想になっているため、一括登録の仕組みは用意しない方針となっています。
パスワード初期化を連続して行なった場合はどうなりますか
初期化のためのURLは1ユーザー1つのみが有効です。すなわちパスワード初期化URLを重複して作成した場合は、後に発行したもののみが有効です。
仕様・制約
パスワードの入力チェック
アカウント(juser)モデルのパスワード項目に設定した入力チェックルールは、パスワードリマインダにも適用されます。
ただし、入力チェックルールの一部は「フロントエンド (WebブラウザのJavaScript)」で実行されるものがあります。例えば正規表現チェックです。このフロントエンドのチェックは、パスワードリマインダには適用されません。
具体的に説明します。パスワード入力チェックに正規表現チェックを適用した場合、パスワードの入力ルールは次のようになります。
チェックのタイミング | サーバでのチェック | フロントエンドでのチェック |
---|---|---|
アカウントモデル(juser)の登録・更新画面 | ○ | ○ |
利用者によるパスワード変更画面 | ○ | ○ |
パスワードリマインダ | ○ | - |