パスワードリマインダ

最終更新日: 2021年3月1日
R8 | R9

利用イメージ

この機能を有効にすると、ログオン画面に「※ パスワードを忘れた方はこちら」というリンクが表示されるようになります。

図1 パスワードリマインダへのリンクが表示される

このリンクを押下すると、図2の画面が表示されます。

図2 パスワード再設定画面

パスワード再設定を行うログオンアカウントを入力し、「送信する」ボタンを押下します。

図3 パスワード再設定を行うログオンアカウントを指定する

ログオンアカウントに紐づいたメールアドレスに、パスワードを再設定するための URL が記載されたメールが送信されます。セキュリティの観点から、このURLは1時間だけ有効となっています。

図4 メールが送信される

メール文面は次のようになっています。

*** 様(ユーザ名:***)
パスワード再設定のリクエストをお受け致しました。
以下のURLからパスワードの再設定を行って下さい。
http://YOURDOMAIN/wagby/setNewPassword.do?id=****
※このURLは2014年08月01日 10時xx分xx秒まで有効です。
**************************************************
なお、この内容にお心当たりの無い場合は、他の方が
メールアドレスを間違えて入力した可能性があります。
その場合、このメールは削除していただけますよう、
お願い申し上げます。
**************************************************

メール到着後、文中に記載されたURLのページを開きます。図5のような画面が表示されます。

図5 パスワード変更画面

新しいパスワードを再設定します。

図6 パスワードの再設定を行った

この手順により、ログオンアカウントのパスワードが初期化されます。アカウントがロックされていた場合、ロックも解除されます。

セキュリティ上の問題と対策

この機能によるセキュリティ上の問題点と、その対策方法は次のとおりです。

  • 登録メールアドレス以外にはパスワードなどの重要な情報の一切を開示しません。
  • 本機能の利用可否や通知メールの送信先はログオンユーザ自身がいつでも変更することができます。
  • パスワード変更用のURLの有効期限は1時間としています。
  • パスワード変更用のURLを一度操作すると、1時間以内であっても同URLは無効となります。すなわち、このURLは一度利用すると使うことはできません。
  • 本機能によってパスワードを変更したという行為はログに記録されます。
  • 当該ログオンアカウントが「パスワード変更権限」を持たない場合、本機能は利用できません。
  • 送信するメールの文面は自由に修正できます。
  • 本機能を利用するとログオンユーザ自身がアカウントのロックを解除できるようになります。従って、退職や卒業等で特定のユーザのログオンに制限をかけたい場合は、アカウント更新画面で「アカウントロック情報」をセットすると共に「パスワード変更」及び「システム管理者」の権限(プリンシパル)を無効にしてください。

これらのシステム的な対策と並行して、利用者には「パスワードリセット詐欺」という攻撃が存在することも伝え、セキュリティ向上の教育を実施されることを推奨します。

具体的にはメールの差出人および、クリックするURLが正しいことを目視で確認することがあげられます。

定義方法

パスワードリマインダの設定

環境メニューから、「アプリケーション>パスワードリマインダ」を開きます。「パスワードリマインダ機能を使用する」の欄に "USE" と記載するとともに、「差出人」の欄に適切なメールアドレスを入力します。

(利用者は差出人のメールアドレスを見て、届いたメールが妥当なものか、それとも疑わしいメールなのかを判断します。一般的にはシステム管理者につながるメールアドレスを指定するとよいでしょう。)

「本文」は自由に編集できます。文中の例にあるように、${username} などの表記が利用できます。

表記方法 説明 メール文中に展開される文字列の例
${username} ログオンアカウント yamada
${userid} ユーザー名 山田
${url} パスワード変更用として一時的に用意されたURL http://localhost:8921/wagby/setNewPassword.do?id=...
${host} urlのホスト部分 http://localhost:8921/wagby/
${path} urlのホスト部から右側の部分 setNewPassword.do?id=...
通常はメール文中に ${url} を指定します。リバースプロキシを使う環境で、ホスト名を別に指定したいときは、固定文字列(ホスト名)の後に ${path} を指定するとよいでしょう。
${limitdate} パスワード変更用URLの有効期限 2014年09月01日 18時00分00秒
図7 パスワードリマインダの設定

メールサーバの設定

パスワードリマインダ機能はメール送信処理を行うため、同じ環境設定の「メール」タブにて、メールホスト名を設定してください。

ご利用のメールホストがポート番号、プロトコル、SMTP認証などを設定する必要がある場合、「メール設定(送信)」欄を適切に記載してください。どのような値を設定するかは、貴社ネットワーク管理者にお尋ねください。

図8 メール送信設定

メールアドレスを利用者に設定させる場合

パスワードリマインダ機能が有効になっているとき、各利用者の「プレファレンス」設定画面にて本機能を利用するかどうかを設定する欄が用意されます。

ここで「パスワードリマインダ」を「利用する」とし、かつ、入力フィールドにメールアドレスを指定することで、この利用者のログオンアカウントが、本機能を利用できるようになります。

注意

メールアドレスの記載がない場合、本機能はご利用いただけません。

図9 プレファレンスの設定

システム内部でログオンアカウントに紐づくメールアドレスを保持している場合

次のような場合は、こちらの方法をご利用されることを推奨します。

  1. Wagbyが提供するログオンアカウント(juser)を拡張し、メールアドレス項目を用意している。
  2. ログオンアカウントを主キーとする別モデルを定義しており、そこでメールアドレス項目を用意している。

この場合、すでに管理しているメールアドレス情報をパスワードリマインダ機能でも利用することができます。

定義方法

「パスワードリマインダ機能を使用する」の欄に "USESQL" と記載します。

図10 パスワードリマインダ機能を使用する

環境設定の「メール」タブにて、メールホスト名を設定します。

図11 メール送信設定

jfcbase.propertiesの設定

「どのようなSQLを使ってメールアドレスを取得するか」を設定します。

wagbydesigner\bin\webpage\WEB-INF\src\jfcbase.properties を customize\resources\myjfcbase.properties としてコピーします。

テキストエディタ(Windows OS に付属のメモ帳は使用不可です。その他のテキストエディタをご利用ください。)を用いて、コピーした myjfcbase.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

"case 1" というエントリが「1. Wagbyが提供するアカウント定義(juser)の拡張」に対応します。この場合、case 1 以下の行について最初のセミコロン (;) を除去し、この設定を有効にします

jp.jasminesoft.jfc.HibernateUserInfo.getEmailByUserid.query=\
 select c.email_ from jp.jasminesoft.jfc.model.juser.Juser as c where c.userid_ = :userid

その上で、必要に応じてこのSQLを書き換えてください。

Hibernate が解釈する HQL という書式になっています。

具体的には select c.email_ ... の "email" 部に、定義ファイル上のメールアドレス項目名(英語)が入ります。

項目名およびモデル名は Hibernate マッピングファイルを直接参照し、実際のプロパティ名を確認する必要があります。例えば項目名が "mobile_email" のとき、プロパティ名は "mobileEmail_" となります。Hibernate マッピングファイルは wagbydesigner\webapps\wagbydesigner\WEB-INF\env\work\srcgen\webpage\WEB-INF\classes フォルダ以下にモデル毎の ".hbm.xml" という拡張子形式で生成されています。

"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 プレファレンスの設定

図12の設定による挙動の違いは次のとおりです。

ユーザ設定変更可能が「可」の場合

アプリケーションの「プレファレンス」(このページにある図9)で「パスワードリマインダ」を「利用する」とした場合は、その設定を優先します。

「利用しない」とした場合は、定義ファイルの「初期値」を優先します。

ユーザ設定変更可能が「不可」の場合

図11の初期値が「利用する」となっていた場合、本機能を利用します。
図11の初期値が「利用しない」となっていた場合、本機能を利用しません。

オートスケール環境での動作

オートスケール/クラスタ環境では、このリマインダ情報を jfcreminder テーブルに格納します。(非オートスケール/クラスタ環境では、サーバのメモリで管理します。)

この jfcreminder テーブルは内部利用に限定されるため、Wagbyのモデルとしては定義されません。次の性質をもちます。

  • オートスケール/クラスタ設定が有効な場合にのみ、作成される。
  • juserモデルのインポート処理時にあわせて、このテーブルがdrop&createされる。
  • Wagbyのインポート・エクスポート画面では、このモデルは表示されない。

よくある質問と回答

パスワードリマインダ機能を利用する/しない自体の設定を一括で指定できますか

できません。ユーザ自身がオプトインで機能を有効にするという設計思想になっているため、一括登録の仕組みは用意しない方針となっています。

パスワード初期化を連続して行なった場合はどうなりますか

初期化のためのURLは1ユーザー1つのみが有効です。すなわちパスワード初期化URLを重複して作成した場合は、後に発行したもののみが有効です。

仕様・制約

パスワードの入力チェック

アカウント(juser)モデルのパスワード項目に設定した入力チェックルールは、パスワードリマインダにも適用されます。

ただし、入力チェックルールの一部は「フロントエンド (WebブラウザのJavaScript)」で実行されるものがあります。例えば正規表現チェックです。このフロントエンドのチェックは、パスワードリマインダには適用されません。

具体的に説明します。パスワード入力チェックに正規表現チェックを適用した場合、パスワードの入力ルールは次のようになります。

チェックのタイミング サーバでのチェック フロントエンドでのチェック
アカウントモデル(juser)の登録・更新画面
利用者によるパスワード変更画面
パスワードリマインダ-
パスワードリマインダでフロントエンドのチェックが機能しない理由は、固定のHTMLフォームとなっているためです。(自動生成の対象ではない。)
フロントエンドのチェックがなくても、サーバ処理でパスワードの入力チェックはすべて実施されます。フロントエンドのチェックが機能した場合、一部のチェックが先に行われるようになります。これは UI の改善につながりますが、機能的には変わりません。