データ構造とアルゴリズム論



Similar documents
データ構造とアルゴリズム論

データ構造とアルゴリズム論

データ構造とアルゴリズム論

4.5. < 参 加 表 明 書 を 提 出 する> 調 達 案 件 一 覧 の 表 示 対 象 となる 案 件 を 検 索 し 調 達 案 件 一 覧 に 表 示 させます 参 加 したい 案 件 の 調 達 案 件 名 称 行 - 入 札 参 加 資 格 確 認 申 請 / 技 術 資 料 /

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

この 章 では 電 子 入 札 システムをご 利 用 いただくための 事 前 準 備 について 説 明 します 事 前 準 備 と して ID 初 期 パスワードの 確 認 初 期 パスワード 初 期 見 積 用 暗 証 番 号 の 変 更 IC カード 登 録 またはICカード 更 新 を 行 っ

WEBメールシステム 操作手順書

目 次 目 次 1 ログイン ログアウト ログインする...1 ログイン 画 面 が 表 示 されないときは?... 1 初 めてログインするときのパスワードは?... 2 初 期 パスワードを 忘 れてしまったときは?... 2 変 更 したパスワードを 忘 れてしまったときは?.

Microsoft Word - ML_ListManager_10j.doc

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

前 書 き 広 域 機 関 システム System for Organization for Cross-regional Coordination of Transmission Operators(OCCTO) rev: 商 標 類 Windows Office Excel

2016 年 度 情 報 リテラシー 三 科 目 合 計 の 算 出 関 数 を 用 いて 各 教 科 の 平 均 点 と 最 高 点 を 求 めることにする この2つの 計 算 は [ホーム]タブのコマ ンドにも 用 意 されているが 今 回 は 関 数 として 作 成 する まず 表 に 三 科

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

PowerPoint プレゼンテーション

目 次 1. ログイン/ログアウト 1.1 ログインする p ログアウトする p.3 2. 受 講 一 覧 画 面 p.4 3. 授 業 ページの 閲 覧 3.1 授 業 ページへの 遷 移 p 授 業 資 料 を IT s class.からダウンロードする p

スライド 1

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

Microsoft Word - PORTAガイド(教員用)v.3.doc

GRIDY SFA カスタム 項 目 操 作 ガイド 用 本 書 はに 必 要 な 操 作 を 解 説 しております は GRIDY SFA ののことです GRIDY SFA へ 申 し 込 み 最 初 に 登 録 を 行 った 方 がそのままとなります カスタム 項 目 はの 方 のみ 操 作 可

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

スライド 1

2

PowerPoint プレゼンテーション

Ver 改 訂 日 付 改 訂 内 容 1

Web Servlet/JSP JSP


6 システムを 入 れているパソコンを 入 れ 替 えたいが どうしたらいいのか 元 のパソコンから 新 しいパソコンに 昨 年 度 入 力 データを 移 行 します 手 順 は 次 のとおりです 1 元 のパソコンでシステムを 起 動 して メニュー 画 面 から バックアップ リカバリ を 選

Microsoft PowerPoint - webサイト更新マニュアル ppt [互換モード]

WebMail ユーザーズガイド

改 定 履 歴 改 訂 日 改 訂 理 由 及 び 内 容 承 認 者 確 認 者 改 訂 者 05/8/7 新 版 発 行 05/0/5 推 奨 動 作 環 境 を 追 記

e-class

第 1 章 共 通 操 作 1.1 ログイン PIN 番 号 入 力 (1) 大 阪 府 電 子 入 札 システム トップ 画 面 より 1 電 子 入 札 システム ボタンをクリックし ます 1 1-2

目 次 画 面 遷 移 図 1.ログイン 画 面 2. 画 面 構 成 3.メニュー 4.タスク 一 覧 4-1.タスク: 新 規 4-2.タスク: 閲 覧 4-3.タスク: 更 新 5.タスク 検 索 6. 通 知 メール 6-1. 通 知 メール: 新 規 / 修 正 7. 連 絡 事 項 7-

目 次 1 インストール 手 順 プログラム データファイルのインストール Microsoft Access2013Runtime SP1(32bit) 版 のインストール 基 本 操 作 ログイン メニュー...

はじめに 本 書 は SUPER COMPACT Pathfinder DFS のご 利 用 に 際 して クライアント 端 末 の 設 定 方 法 について 説 明 して います なお 本 書 内 で 使 用 している 図 は 標 準 的 な 設 定 によって 表 示 されるものを 使 用 してお

(Microsoft PowerPoint -

1.SONSAPP( 見 積 )アプリとは 1-1 SONSAPP( 見 積 )の 概 要 SONSAPP( 見 積 )とは HRKSONS 社 が 提 供 する 建 設 業 向 け 見 積 クラウドサービス (NeSTWORK)と kintone の 連 携 を 目 的 とした kintone ア

第1章 情報処理センターの利用

項 目 を 入 力 し [ 内 容 確 認 ]をクリック *がついているものは 必 須 項 目 になります 入 力 情 報 の 確 認 のページが 表 示 されるので 間 違 いがなければ[ 送 信 ]をクリック 以 上 で 登 録 フォーム 処 理 の 完 了 フォームから 送 られたデータを 確

学 校 紹 介 ページ 公 開 までの 流 れ 2 管 理 画 面 よりログイン お 知 らせいたしますID PASSにて 管 理 画 面 よりログインします さんぽう 進 学 ネットモバイル 看 護 医 療 進 学 ネット のIDにつきましては 2010 年 度 用 と2011 年 度 用 とで

文書管理

PDF閲覧制限システムLight版体験版マニュアル

Microsoft Word - サンプル _データベースアクセス_.doc

PowerPoint プレゼンテーション

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

PowerPoint プレゼンテーション

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ

複合検索機能マニュアル

<4D F736F F F696E74202D C90BF8F CC8DEC90AC97E181698A4F8D E8816A5F56322E707074>

目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホ

1

Gmail 利用者ガイド

スライド 1

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

富士山チェックリスト

次 NV*** レコーダーの 管 理 者 名 /パスワード 登 録 順... 3 NV*** レコーダーの 管 理 者 名 /パスワード 変 更 順... 4 NV*** レコーダーへのカメラの 管 理 者 ユーザー 名 /パスワード 設 定 順... 5 NV*** レコーダーへの 認 証 対 応

<IE の 設 定 について> 従 来 版 をすでにご 利 用 の 方 の 場 合 互 換 表 示 設 定 がある 状 態 になっていると 思 わ れますので 必 ず 解 除 の 設 定 を 行 ってください 従 来 版 では IE の 10 以 上 では 互 換 表 示 設 定 が 必 要 でした

180404

研究者情報データベース

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

目 次 1. ログイン ユーザー 登 録 TOP 職 員...8 (1) 職 員 の 名 刺 表 示...8 (2) 職 員 の 名 刺 一 括 ダウンロード...8 (3) 職 員 の 名 刺 帳 から 検 索 検 索...9 (1) 氏 名

Clica(クリカ)とは Clica は 教 育 機 関 などの 学 習 の 場 で 活 用 されている 安 心 カンタン 無 料 の Web アプリです 普 段 は 発 言 し にくい 環 境 でも Clica を 使 えば 気 軽 に 自 分 の 考 えや 意 見 を 投 稿 できたり アンケー

Fckeditor の 基 本 的 な 使 い 方 Point!! fckeditor を 上 手 く 使 うコツ 始 めにページ 内 に 一 通 り 文 章 ( 画 像 や 表 を 含 む)を 書 いてから 文 字 装 飾 をして 下 さい 編 集 したいテキストや 画 像 を 選 択 し アイコ

Microsoft PowerPoint - c3_op-manual.pdf

請 求 データを 作 成 しましょう 操 作 手 順 1 トップページ 画 面 で [ 口 座 振 替 請 求 ]をクリックして 口 座 振 替 請 求 サービスのメインメニュー 画 面 を 表 示 し [ 請 求 データ 作 成 ]をクリックします 請 求 データは 最 大 10 個 作 成 する

ユーザーガイド

(Microsoft Word - PLA-SFmanualVer\202P.doc)

共済会_Kねっと利用マニュアル.indd

untitled

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

3) First name( 名 ),Last name( 姓 ), アドレスを 入 力 し Continue を 押 します. 名, 姓 は 日 本 語 も 使 えるようですが,ログイン 後, 名 姓 という 順 で 表 示 されます.アカウント 管 理 は( 大 会 の 発 表 申

PC 移 行 は 以 下 の 流 れで 行 います 次 ページ 以 降 に 各 手 順 を 記 載 しますのでご 確 認 ください ( をクリックすると 該 当 の 説 明 にジャンプします ) 移 行 元 のPCでの 作 業 Step1 移 行 するデータをバックアップする (3ページ) [データ

<4D F736F F D E71905C90BF91808DEC8CA48F4389EF8E9197BF82542E646F63>

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

Microsoft Word - WBT(PP応用編).docx

目 次 ログインする 前 に... 4 メンバー 管 理 編 ( 管 理 者 )... 5 ログインする... 6 トップページについて... 7 メンバー 管 理 をする... 8 メンバー 管 理 画 面 について 医 療 機 関 指 定 新 規 追 加 指 定...

WebAlertクイックマニュアル

_責)Wordトレ2-1章_斉

< A B E786C7378>

改 訂 履 歴 版 概 要 区 分 更 新 日 1.0 新 規 作 成 新 規 2014/06/26 2

エ CarotDAV が 起 動 すると 次 のようなウィンドウが 表 示 されます メニューバーにある File から New Connection の WebDAV を 選 択 します オ 次 のような 設 定 画 面 が 表 示 されたら General タブでネットワークアドレスなどを 設

目 次 電 子 申 請 を 使 用 した 申 請 の 流 れ 1ページ 申 請 書 ( 概 算 保 険 料 申 告 書 )の 作 成 2ページ 作 成 した 申 請 書 の 送 信 31ページ 状 況 照 会 電 子 納 付 を 行 う 62ページ 返 送 書 類 の 取 得 75ページ お 問 い

Office 10 パッケージ版「リンク集」

本 操 作 説 明 書 について 本 操 作 説 明 書 は 物 品 電 子 調 達 システム 入 札 参 加 資 格 審 査 申 請 についての 操 作 を 説 明 したものです 動 作 環 境 本 アプリケーションは 以 下 の 環 境 にて 動 作 致 します OS 日 本 語 Microso

PowerPoint プレゼンテーション

パソコンバンクWeb21 操作マニュアル[導入・事前設定編]

Microsoft Word - 操作マニュアル(石油コンビナート_オフラインソフト編)_v0.2.doc

目 次 1 ログインする 1 2 研 修 情 報 を 登 録 する 2 step1 登 録 フォームに 入 力 する 2 step2 プレビューで 入 力 内 容 を 確 認 する 18 step3 下 書 き 保 存 する 20 step4 登 録 する 21 step5 管 理 者 による 承

(3) 下 記 画 面 が 表 示 されます 参 照 ボタンを 押 下 すると 図 5.1-4フォルダ 指 定 画 面 が 表 示 されるので 保 存 先 を 指 定 し OKボタン を 押 下 します 展 開 ボタンを 押 下 します 図 ファイルの 展 開 先 ( 保 存 場 所 )

1. 会 員 情 報 の 照 会 / 変 更 ご 登 録 の 会 員 情 報 の 確 認 および 変 更 できます (1) 左 側 のサブメニューで[ 基 本 情 報 ]を 選 択 すると お 客 様 の 基 本 情 報 が 表 示 します (1) (2) [ 変 更 ] [ご 登 録 回 線 の

WEB PARK 2014新規利用ガイド

G-Web操作マニュアル

V-CUBE One

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

参 考 1 無 線 局 情 報 入 力 支 援 ( 基 地 局 と 固 定 局 の 事 項 書 のみに 対 応 ) 無 線 局 情 報 入 力 支 援 機 能 とは 過 去 に 申 請 したデータをダウンロードし 無 線 局 インターネット 申 請 アプリケーション で 利 用 できる 便 利 な

目 次 1 概 要 動 作 環 境 起 動 方 法 臨 床 研 修 プログラム 検 索 サイトで 提 供 している 情 報 情 報 閲 覧 の 流 れ 画 面 構 成 メニューについて 可 変 メニ

2 / 11 ページ 第 5 講 ビジネスメールの 作 法 Active! Mail を 起 動 し ログインしておきましょう 5-1 ビジネスメールのルールとマナー ビジネスメールのルールとマナーを 確 認 しましょう 宛 先 やCC BCCを 使 い 分 ける 本 文 の 内 容 が 一 目 で

SchITコモンズ【活用編】

Transcription:

第 13 章.Tomcat を 用 いたユーザ 認 証 学 習 のねらい 1 データベースに 登 録 されたユーザのみにアクセスを 許 可 するユーザ 認 証 の 仕 組 みを Tomcat の 機 能 を 用 いて 学 習 する < 前 回 の 復 習 > 講 義 で 示 された 基 礎 課 題 13-1 に 解 答 して 下 さい 13-1.はじめに 本 学 の 情 報 ポータルなど 個 人 情 報 を 管 理 しているページは セキュリティのため 本 人 以 外 がアクセスできないように ユーザ ID とパスワードでアクセスを 管 理 しています こ の 仕 組 みをユーザ 認 証 と 言 います 本 章 では 以 下 の 13-2~13-4 節 の 説 明 にしたがって Tomcat が 用 意 している 機 能 を 用 いてユーザ 認 証 機 能 がついたページを 作 成 しましょう 13-2. 閲 覧 ページ(サーブレット)の 作 成 まず 基 になる 閲 覧 ページを 作 成 します 作 成 するのは 次 のようなページです Page1Servlet.java というサーブレットに 接 続 すると 次 のように 表 示 される Page2Servlet.java というサーブレットに 接 続 すると 次 のように 表 示 される そして 両 者 はリンクで 結 びついている ユーザ 認 証 は 後 に 回 して この 2 つのサーブレットを 次 のように 作 成 してください 185

1 Tomcat プロジェクトを Auth という 名 前 で 新 規 作 成 します その 中 にパッケージ 名 auth クラス 名 Page1Servlet.java というクラスを 作 成 してください 続 いて 同 じパッケージ 内 に Page2Servlet.java というクラスを 作 成 し ます 2 Page1Servlet.java を 次 のように 記 述 してください この 時 点 では 新 しい 内 容 は 含 まれていないので 理 解 に 問 題 はないと 思 います package auth; <Page1Servlet.java> import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class Page1Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); PrintWriter out=response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>ユーザー 認 証 のテスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>ようこそページ 1 へ</p>"); out.println("<p><a href= "/Auth/Page2Servlet "> ページ 2 へ</a></p>"); out.println("</body>"); を で 囲 まれた 文 字 列 中 に 指 out.println("</html>"); 定 する 場 合 は と 指 定 します 3 同 様 に Page2Servlet.java を 記 述 します 次 ページの 下 線 部 のようにページ 番 号 1 と2が 入 れ 替 わるだけです 186

package auth; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; <Page2Servlet.java> public class Page2Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); PrintWriter out=response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>ユーザー 認 証 のテスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>ようこそページ 2 へ</p>"); out.println("<p><a href= "/Auth/Page1Servlet "> ページ 1 へ</a></p>"); out.println("</body>"); out.println("</html>"); 4 上 の2つのサーブレットの URL を 登 録 するため web.xml を 次 ページのように 記 述 し ます WEB-INF 内 に 新 規 作 成 187

<web-app> <web.xml> <servlet> <servlet-name>page1servlet</servlet-name> <servlet-class>auth.page1servlet</servlet-class> </servlet> <servlet> <servlet-name>page2servlet</servlet-name> <servlet-class>auth.page2servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>page1servlet</servlet-name> <url-pattern>/page1servlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>page2servlet</servlet-name> <url-pattern>/page2servlet</url-pattern> </servlet-mapping> </web-app> 応 用 課 題 13-A 作 成 したら 動 作 を 確 認 してください その 上 で 閲 覧 対 象 となる 二 つのページを 作 成 し ました き 記 述 して 提 出 してください 13-3.ユーザ 情 報 データベースの 作 成 次 に ユーザ 認 証 を 行 う 際 に 参 照 する ユーザ 名 とパスワードを 保 管 したデータベース を 作 成 します 作 成 するテーブルは 次 の user_table と role_table の2つです <user_table> user pass Name user:ユーザ 名 S_Kaneda pass1 金 田 正 太 郎 pass:パスワード N_Date pass2 伊 達 直 人 Name:ユーザ 氏 名 <role_table> user role user:ユーザ 名 S_Kaneda user1 role:ユーザの 承 認 レベル 例 えば 一 般 ユーザや 管 理 N_Date user1 者 などを 区 別 する 際 に 用 いる ここでは 同 一 のロールにしてある(role 名 は 任 意 ) 188

上 の 二 つのテーブルを 次 の 手 順 にしたがって 作 成 してください 1 MySQL を 起 動 し 下 のようにデータベース auth を 作 成 します( 認 証 は 英 語 で authentication というので そこから 命 名 ) 下 線 部 がコマンド 入 力 部 分 2 操 作 対 象 を auth にします 3 次 のように user_table を 作 成 し 2 名 分 のデータを 登 録 します user_table の 作 成 データの 追 加 1 データの 追 加 2 4 上 の 作 成 後 テーブルの 全 データを 取 り 出 すと 次 のように 表 示 されるはずです 5 続 いて 同 じ 要 領 で テーブル role_table を 作 成 し 2 名 分 のデータを 登 録 します role_table の 作 成 189

データの 追 加 6 上 の 作 成 後 テーブルの 全 データを 取 り 出 すと 次 のように 表 示 されるはずです 応 用 課 題 13-B 上 の4と6の 表 示 画 面 を 確 認 したら データベース auth の 中 に user_table と role_table を 作 成 しました と 記 述 して 提 出 してください 13-4.レルム(Realm)の 指 定 -JDBC レルムの 指 定 本 節 ではレルム(Realm)を 指 定 します レルムとは 聞 き 慣 れない 用 語 だと 思 いますが ユーザ 認 証 を 行 う 際 に 必 要 となるユーザ ID やパスワードの 管 理 の 仕 方 を 指 します Tomcat ではデフォルトで UserDatabase レルムというレルムが 設 定 されています これは ユーザ ID パスワード ロールを tomcat-users.xml というファイルに 記 述 し それを 参 照 す ることで 認 証 を 行 う 方 式 です これは 簡 便 で 便 利 な 反 面 ユーザ 数 が 増 えた 場 合 には 実 用 的 ではありません そこで ここでは ユーザ ID パスワード ロールをデータベース に 格 納 し JDBC 経 由 で 認 証 を 行 う JDBC レルムを 用 いることにします つまり 前 節 で 作 成 したデータベースを 認 証 に 用 いる 訳 です 以 下 の 手 順 にしたがって JDBC レルムを 用 いる ための 設 定 を 行 ってください 1 Tomcat のルートディレクトリ(C:\Program Files\Apache Software Foundation\Tomcat 8.0)にある conf というフォルダを 開 いてください この 中 に server.xml があ ります これを 編 集 するので 秀 丸 エディタなど 適 当 なエディタを 使 って 開 いてくだ さい 2 130 行 目 付 近 にある <Realm classname= という 部 分 は UserDatabase レル ムの 設 定 を 行 っているところです 今 は これを 使 わず JDBC レルムを 使 用 するので 190

この 部 分 を 下 のようにコメントにしてください そして その 下 に 点 線 枠 で 示 した JDBC レルム 設 定 部 分 を 新 たに 記 述 します <server.xml> これをつけてコメントにする <!-- <Realm classname="org.apache.catalina.realm.userdatabaserealm" resourcename="userdatabase"/> --> JDBC レルム 設 定 部 分 <Realm classname="org.apache.catalina.realm.jdbcrealm" drivername="com.mysql.jdbc.driver" MySQL のパスワード connectionurl="jdbc:mysql://localhost/auth" を 各 自 記 述 すること connectionname="root" connectionpassword="*******" usertable="user_table" usernamecol="user" usercredcol="pass" userroletable="role_table" rolenamecol="role" /> 解 説 JDBC レルムタグでは 次 の 要 素 を 指 定 しています 1. classname:このレルムを 動 作 させるために Tomcat が 用 意 しているクラス 名 2. drivername:jdbc ドライバ 名 MySQL の 場 合 は"com.mysql.jdbc.Driver" 3. connectionurl: 接 続 するデータベースの URL 最 後 の auth がデータベース 名 4. connectionname connectionpassword: 当 該 データベースに 接 続 できるユーザ 名 とパスワード ここではユーザ 名 として root を 用 いる ただし パスワードは 各 自 のものを 指 定 すること 5. usertable:ユーザ 名 とパスワードが 格 納 されているテーブル 名 6. usernamecol: 当 該 テーブルに 於 いて ユーザ 名 が 入 っているカラム 名 ( 列 名 ) 7. usercredcol: 当 該 テーブルに 於 いて パスワードが 入 っているカラム 名 ( 列 名 ) 8. userroletable:ユーザ 名 とロール 名 が 格 納 されているテーブル 名 9. rolenamecol: 当 該 テーブルに 於 いて ロール 名 が 入 っているカラム 名 ( 列 名 ) 3 JDBC レルムを 使 用 する 場 合 使 用 するデータベースの JDBC ドライバを 所 定 の 場 所 にコピーしておく 必 要 があります Tomcat のルートディレクトリ(C:\Program Files\Apache Software Foundation\Tomcat 8.0)にある lib というフォルダ 内 に MySQL の JDBC ドライバ mysql-connector-java-5.1.37-bin.jar をコピーしてくださ い JDBC ドライバは 10-3 節 (p.149)で 確 認 したはずです 191

応 用 課 題 13-C 上 の 処 理 を 行 ったら server.xml に JDBC レルムを 使 用 する 設 定 を 行 いました と 記 述 して 提 出 してください 13-5. 認 証 方 法 の 指 定 -FORM 認 証 の 指 定 JavaEE では 次 の 4 種 類 の 認 証 方 法 が 用 意 されています 1. BASIC 認 証 :HTTP の BASIC 認 証 を 使 ってユーザ 名 とパスワードを 照 合 する 方 式 パスワードもそのままサーバに 送 信 される ログインは HTTP で 用 意 されているダイ アログボックスを 用 いる 2. DIGEST 認 証 : 上 と 同 様 だが パスワードを 簡 易 的 に 暗 号 化 してサーバに 送 信 する 点 が 異 なる 3. FORM 認 証 :BASIC 認 証 との 違 いは ユーザ 名 やパスワード 入 力 時 に HTTP で 用 意 されているダイアログボックスではなく 独 自 のログイン 画 面 を 用 いる 点 4. CLIENT-CERT 認 証 :クライアント 証 明 書 を 使 ってユーザ 認 証 を 行 う 最 も 安 全 な 認 証 方 式 この 方 式 では SSL (Secure Sockets Layer) プロトコルを 使 用 して 認 証 を 行 う 必 要 がある ここでは 標 準 的 に 用 いられている FORM 認 証 を 用 います 次 の 手 順 にしたがって FORM 認 証 の 設 定 を 行 ってください 1 web.xml に 次 ページのように<security-constraint> <login-config>そして <security-role>の3つのタグを 追 加 してください 2 続 いて ログイン 時 に 表 示 されるページ Login.html を 下 のように Auth プロジェ クトのルートディレクトリに 作 成 し p.194 の 様 に 記 述 してください 3 最 後 に ログイン 失 敗 時 に 表 示 されるページ Error.html を Auth プロジェクト のルートディレクトリ 内 に 作 成 し p.194 の 様 に 記 述 してください 192

<web-app> <web.xml> <security-constraint> <web-resource-collection> <web-resource-name>form Auth</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user1</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>form</auth-method> <form-login-config> <form-login-page>/login.html</form-login-page> <form-error-page>/error.html</form-error-page> </form-login-config> </login-config> アクセス 制 限 をする Web リソースに 名 前 をつける( 名 前 は 任 意 ) セキュリティの 対 象 となる URL:ここで は Web アプリケーション 内 の 全 ページ アクセスを 許 可 するロール 名 認 証 方 法 を FORM 認 証 に 指 定 ログイン 用 ページの 指 定 ログイン 失 敗 時 のページの 指 定 <security-role> <role-name>user1</role-name> </security-role> ( 使 用 する)ロール 名 の 定 義 </web-app> 193

<html lang="ja"> <head> <title>ログイン 画 面 </title> </head> <body> <Login.html> <h1>ユーザ 認 証 画 面 </h1> <p>ユーザ 名 とパスワードを 入 力 して[ 送 信 ]ボタンをクリックしてください </p> <form method="post" action="j_security_check" name="loginform"> ユーザ 名 <input type="text" name="j_username" ><br> パスワード <input type="password" name="j_password" ><br> <input type="submit" value=" 送 信 "> <input type="reset" value="リセット"> </form> アクション 名 :j_security_check </body> </html> ユーザ 名 :j_username パスワード:j_password の 各 名 称 は 固 定 されている <html lang="ja"> <head> <title>ログインエラー 画 面 </title> <Error.html> </head> <body> <h1>ログインエラー</h1> <p>ログインに 失 敗 しました ユーザ 名 あるいはパスワードが 正 しくありません </p> </body> </html> 応 用 課 題 13-D 作 成 したら 次 の 動 作 を 確 認 してください 1 http://localhost:8080/auth/page1servlet に 接 続 してください すると 次 ページ のログイン 画 面 が 現 れます ここで 13-3 節 で 作 成 したデータベースに 登 録 されてい るユーザ 名 とパスワードを 入 力 してください 194

2 すると 下 のようにページ 1 にアクセスできます 3 上 の 状 態 で ページ 2 へ をクリックすると ページ 2 へジャンプします このよう に いったんユーザ 認 証 をクリアすると 当 該 Web アプリケーション 内 のページに( 認 証 なしで) 移 動 することができます 4 一 方 1のログイン 画 面 で 不 正 なユーザ 名 あるいはパスワードを 入 力 すると 次 のよ うにログインエラー 画 面 に 移 動 します 上 の 動 作 を 確 認 したら ユーザ 認 証 機 能 が 動 作 することを 確 認 しました と 記 述 して 提 出 してください 195

13-6.ユーザ 認 証 の 改 良 応 用 課 題 13-E -ログアウト 処 理 の 追 加 FORM 認 証 を 用 いた 場 合 いったん 認 証 が 通 ると セッションが 有 効 な 間 (つまりブラ ウザを 閉 じるまで)はログインした 状 態 が 続 きます そこで 任 意 のタイミングでログイ ン 状 態 を 終 了 できるよう ログアウトの 処 理 を 付 加 してみましょう 次 の 手 順 にしたがっ て ログアウトの 処 理 を 加 えてください 1 ログアウト 時 に 表 示 されるページ Logut.jsp を Auth プロジェクトのルートディレクトリに 作 成 し 下 のように 記 述 してください 下 線 部 の invalidate()メソッドはセッション を 無 効 にするメソッドです つまり この 命 令 で セッションは 終 了 し したがってログイン 状 態 も 終 了 することになります <Logout.jsp> <%@ page contenttype="text/html; charset=windows-31j" %> <html> <body> ログアウトしました <% session.invalidate(); %> </body> </html> 2 次 に Page1Servlet.java および Page2Servlet.java を 次 ページのように 修 正 し てください 下 線 部 が 追 加 部 分 です 追 加 したのは 上 の Logout.jsp へのリンクを つけた 部 分 です 196

package auth; <Page1Servlet.java> public class Page1Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); out.println("<p><a href= "/Auth/Page2Servlet "> ページ 2 へ</a></p>"); out.println("<p><a href= "/Auth/Logout.jsp "> ログアウト</a></p>"); out.println("</body>"); は 使 用 フォントによっては と 表 示 されます out.println("</html>"); package auth; <Page2Servlet.java> public class Page2Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); out.println("<p><a href= "/Auth/Page1Servlet "> ページ 1 へ</a></p>"); out.println("<p><a href= "/Auth/Logout.jsp "> ログアウト</a></p>"); out.println("</body>"); out.println("</html>"); 197

作 成 したら 次 のように 動 作 を 確 認 してください 1 Page1Servlet へ 接 続 してください 認 証 を 経 た 後 今 度 は 次 のように ログアウト ページのリンクが 表 示 されます 2 このログアウトへのリンクをクリックすると 次 のように Lgout.jsp へジャンプし ます つまりログアウトします 3 再 び Page1Servlet に 接 続 しようとすると ログイン 画 面 が 現 れ ユーザ 認 証 が 必 要 なことを 確 認 してください 上 の 動 作 を 確 認 したら ログアウト 処 理 を 確 認 しました と 記 述 して 提 出 してください 応 用 課 題 13-F - 認 証 情 報 の 取 得 例 えばユーザ 認 証 画 面 で ユーザ 名 として S_Kaneda を 入 力 した 場 合 接 続 先 の Page1Servlet で 次 のようにユーザ 名 が 表 示 されるように 改 良 してみましょう 次 ページの 様 に Page1Servlet.java および Page2Servlet.java を 修 正 してください 下 線 部 が 修 正 箇 所 です 198

package auth; <Page1Servlet.java> public class Page1Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); PrintWriter out=response.getwriter(); String userid=request.getremoteuser(); getremoteuser()メソッドでユーザ 名 を 取 out.println("<html>"); 得 できる out.println("<head>"); out.println("<title>ユーザー 認 証 のテスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>ようこそ"+userid+"さん ページ 1 へ</p>"); package auth; <Page2Servlet.java> public class Page2Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); PrintWriter out=response.getwriter(); String userid=request.getremoteuser(); out.println("<html>"); out.println("<head>"); out.println("<title>ユーザー 認 証 のテスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>ようこそ"+userid+"さん ページ 2 へ</p>"); 199

作 成 したら Page1Servlet に 接 続 し ログイン 画 面 で 入 力 したユーザ 名 が p.198 のように 表 示 されることを 確 認 してください 確 認 したら request.getremoteuser()によっ てログイン 画 面 で 入 力 したユーザ 名 を 取 得 できることを 確 認 しました と 記 述 して 提 出 し てください 応 用 課 題 13-G - 認 証 情 報 の 取 得 ( 改 良 ) 応 用 課 題 13-F を 改 良 して 今 度 は 認 証 後 に 入 力 したユーザ 名 の 氏 名 が 表 示 されるよ うに 改 良 してみましょう どのようにすれば 良 いか 分 かるでしょうか? 13-3 節 で 作 成 したテーブル user_table には Name というカラム( 列 )があり そこ にユーザの 氏 名 が 入 っていました そこで 認 証 後 にこのテーブルを 検 索 して 該 当 するユ ーザ 名 のレコード( 行 )の Name カラムの 値 を 取 り 出 せば 良 いことが 分 かります これを プログラミングしましょう 次 の 手 順 にしたがって 作 成 してください 1 サーブレットからデータベースへ 接 続 するので 11-2 節 で 作 成 したのと 同 様 な DBManager.java を 作 成 し 次 ページのように 記 述 します(DBManager.java をコ ピーして 修 正 しても 結 構 です) 2 次 に p.202 のように Page1Servlet.java を 修 正 します プログラムの 形 式 は 12-1 節 と 同 様 です また Page2Servlet.java についても 同 様 に 修 正 して 下 さい 200

package auth; <DBManager.java> import java.sql.connection; import java.sql.drivermanager; public class DBManager { public static Connection getconnection() { try{ Class.forName("com.mysql.jdbc.Driver"); Connection con=drivermanager.getconnection( "jdbc:mysql://localhost/auth","root","*******"); return con; catch (Exception e) { ユーザ 名 パスワード throw new IllegalStateException(e); MySQL に 接 続 する 際 のユーザ 名 とパスワ ードは 各 自 の 値 を 用 いる 事 作 成 後 動 作 を 確 認 して 下 さい 2 名 のユーザ( 金 田 正 太 郎 伊 達 直 人 )について p.200 のようにユーザ 名 に 対 応 する 氏 名 が 表 示 されることを 確 認 したら user_table からユーザ 名 に 対 応 する 氏 名 を 取 り 出 しそれを 表 示 する 事 ができました と 記 述 して 提 出 してくださ い 201

package auth; import java.sql.connection; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; <Page1Servlet.java> public class Page1Servlet extends HttpServlet{ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding("windows-31j"); response.setcontenttype("text/html;charset=windows-31j"); PrintWriter out=response.getwriter(); String userid=request.getremoteuser(); String sql="select * from user_table where user='"+userid+"'"; Connection con=null; Statement smt=null; try{ con=dbmanager.getconnection(); smt=con.createstatement(); ResultSet rs=smt.executequery(sql); rs.next(); String Name=rs.getString("Name"); out.println("<html>"); out.println("<head>"); out.println("<title>ユーザー 認 証 のテスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>ようこそ"+name+"さん ページ 1 へ</p>"); out.println("</html>"); catch(sqlexception e) { throw new ServletException(e); finally { if(smt!=null) {try{smt.close(); catch(sqlexception ignore) { if(con!=null) {try{con.close(); catch(sqlexception ignore) { 202