18:50:09フィルタサーブレットを呼び出すときに「自動で」「先立って」呼び出されるプログラムのこと。呼び出し側は気がつかない。多段にフィルタをかけることも可能ユーザー認証など、すべてのサーブレットで必ず発生するような前処理などに使うとよい。フィルタのかけ方は以下の通りで、servletの指定法と似ている。</web-app><filter-mapping>は、ワイルドカードなどを指定することも可能。※注意点としては、現段階では、<servlet>や<servlet-mapping>要素よりも前に記述しておく必要がある。▼フィルタ呼び出し時のメソッドフィルタでサーブレットを呼び出すと、doFilterが呼び出される。通常のサーブレットのdoGetメソッドやdoPostメソッドに相当する。▼FilterChainの役割FilterChainは、次に呼び出すべきサーブレットが何かを保持していて、chain.doFilterと呼び出すことで、次のサーブレットに移行できる(フィルタが呼び出された時もdoFilterなので紛らわしい)chain.doFilterを呼び出さないことで、処理の流れをせき止めることも可能。認証が行われていなければ、サーブレットを呼び出さずに、ログインページへリダイレクトするといった処理が可能。▼フィルタの多重呼び出しフィルタを多重に呼び出すときは、単純に<filter>と<filter-mapping>を2つ以上並べるだけ。・フォワードが行われたとき(FORWARD)・インクルードが行われたとき(INCLUDE)・エラーページへ処理が移るとき(ERROR)にそれぞれ呼び出すこともできる<filter-mapping>要素内で、<dispatcher>要素にオプションを書き込むだけ。▼レルムレルムとは、ユーザー名とパスワードの管理方法のこと。▼Basic認証のやり方(ファイル管理でやる方法)「role」は認証を与える単位のようなもの。ユーザー認証の際にはロール単位でアクセス許可を与える。roles="sales"/>のように記述する。その後、web.xmlに以下のように記述する。「Basic認証は通ったが、403で拒否される」という状況になる。平文でパスワードが流れるため、盗聴に弱いDIGESTはユーザ名とパスワードをMD5でハッシュ(ダイジェスト)化して送るユーザーからの見た目は、BASIC認証と変わりがない。現在はほとんどのブラウザがDIGEST認証を採用しているので、DIGEST認証を使うようにしたほうがよい。※UserDatabaseRealmレルムやJDBCRealmレルムの属性に「digest」属性があるが、DIGEST認証とは別のもの。▼DIGEST認証の設定法web.xmlで以下のように設定するだけ。▼FORM認証FORM認証ではユーザー名とパスワードを入力してもらう画面をダイアログの替わりに自分で作成したHTMLページを指定することが出来る。HTTPプロトコルの認証を使わず、認証を通った後はセッションって認証の管理を行う。情報を取り出すことはできない(4の理由による)エラー情報などは送られてこないので、エラーページは静的なページしか表示できない。▼サーブレット側から認証ユーザーを見る方法request.getRemoteUser();戻り値として認証に成功したユーザー名を得られるrequest.getUserPrincipal().getName();でも同じ値が得られる(使い分け方法はよくわかっていないとのこと)request.getAuthType();戻り値として、BASIC、FORM、CLIENT_CERT、DIGESTのどれか1つの値どの認証方式で認証したかがわかるrequest.isUserInRole("ロール名");ユーザがロールに属しているかをチェックできる。▼カスタム認証Tomcatで標準で用意されている認証は、容易に利用できるが、カスタマイズに限界がある。target);のようにして、本来アクセスしようとしたURLをセッションのtargetに保存しておくとよい。nullならば、一度認証を失敗していることがわかる。→「認証に失敗しました。pstmt.executeQuery();のようにして、データベースから取り出して比較する。(一致するレコードがあるかを検索して、あれば認証する)6.ログアウト処理セッションを無効にすればよいだけ。開始されてなければ新規にセッションを作成する。falseを指定するとセッションが存在しない場合はnullを返す。7.認証が通っているかどうかの判別はフィルタを利用するとよい。...のように、同じrequestとresponseでもクラス名が違うことに注意。(ざわざわ)電話番号を入力し、下のボタンを押すと、SMSに認証コードが送られますSMSに認証コードを送る電話音声で認証コードを送るキャンセル不正な入力です。認証キャンセルWIKIの操作を続ける認証コードが届かない場合は。