SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

JAX-RSで実践!JavaでRESTful Webサービス

ユーザ認証とWADL

さて、いよいよ最終回となりました。今回はまず、JavaEEサーバとしてGlassFishを選択し、JAX-RSでユーザ認証を行う方法を説明します。次に、連載1回目でも少しだけ紹介したWADL(RESTful Webサービスのインタフェース記述言語)を利用して、効率的にリクエスタアプリケーションを作成する方法について、解説します。  

RESTful Webサービスにおけるユーザ認証

 RESTful Webサービスでユーザ認証を行う場合は、通常、HTTPの仕様で既定された標準的な認証方式(BASIC認証またはDIGEST認証)を利用します。それでは、JavaEEサーバとしてGlassFishを使用し、GlassFishにおけるBASIC認証の方法を紹介していきましょう。

 GlassFishの認証機能を利用するためには、他のJavaEEサーバ製品と同じように、レルムを設定する必要があります。レルムとは、ユーザ認証を行うために必要な、一連のユーザ情報のセットのことです。ここでは、Tomcatなどでもお馴染みのデータベースを利用したレルム(JDBCレルム)を設定します。JDBCレルムを使用すると、認証に必要なユーザ情報(ユーザ名とパスワード)をテーブル上で管理できるため、大変便利です。

GlassFishとデータベースに対する設定

 JDBCレルムを作成するためには、事前に以下の設定作業を行っておく必要があります。

  • 接続プールとデータソースの作成
  • JDBCレルムで使用するユーザテーブルとユーザグループテーブルの作成

 ユーザテーブルとユーザグループテーブルは、以下のように作成します。

ユーザテーブル
CREATE TABLE USER_TABLE (
USER_NAME VARCHAR(30) PRIMARY KEY, -- ユーザ名
PASSWORD  VARCHAR(50) NOT NULL     -- パスワード
);
ユーザグループテーブル
CREATE TABLE GROUP_TABLE (
USER_NAME  VARCHAR(30) PRIMARY KEY, -- ユーザ名
GROUP_NAME VARCHAR(30) NOT NULL,    -- グループ名
CONSTRAINT FK_USER_NAME FOREIGN KEY(USER_NAME)
    REFERENCES USER_TABLE(USER_NAME)
);

 GlassFishでは、管理者は、管理コンソールか管理コマンドのいずれかを使用して設定作業を行いますが、ここでは管理コマンド"asadminコマンド"を使用します。asadminコマンドは、GlassFishのインストールディレクトリのbinの下に格納されています。JDBCレルム"MyJdbcRealm"を作成するためには、以下のように入力します。引数が少々長いですが、改行することなく打ち込みます。

C:\Java\glassfish\bin>asadmin create-auth-realm --classname com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm 
--property jaas-context=jdbcRealm:datasource-jndi=jdbc/DerbyDS:user-table=USER_TABLE:group-table=GROUP_TABLE:
user-name-column=USER_NAME:password-column=PASSWORD:group-name-column=GROUP_NAME  MyJdbcRealm

 "jdbc/DerbyDS"はデータソースのJNDI名を指しています。コマンド投入後、以下のように出力されれば、MyJdbcRealmが正常に作成されたことになります。

コマンド create-auth-realm は正常に実行されました。

 今回の例では、ユーザにFoo、Barの2人を用意します。前述したUSER_TABLEとGROUP_TABLEには、以下のSQL文でローを挿入しておきます。USER_TABLEのパスワードカラムの値は、パスワードをMD5でハッシュ化したものです。また、Barはユーザグループ"user_gropu"に所属しているものとしてます。

INSERT INTO USER_TABLE VALUES('Foo', 'a621f6f849ec2327dabfc4392fd59a70');
INSERT INTO USER_TABLE VALUES('Bar', 'a59d77d28c59ebb32180877327b5d07d');
INSERT INTO GROUP_TABLE VALUES('Bar', 'user_group');

 これでGlassFishとデータベースに対する設定は終わりです。

次のページ
Webアプリケーションに対する設定

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
JAX-RSで実践!JavaでRESTful Webサービス連載記事一覧

もっと読む

この記事の著者

UFJIS 斉藤賢哉(ユーエフジェーアイエスサイトウケンヤ)

UFJIS株式会社三菱UFJフィナンシャルグループ(MUFG)の100%出資子会社。銀行、信託、証券、カード・信販、リースなど幅広い金融サービス機能を有する総合金融グループであるMUFGグループ各社の総合金融サービスをIT面から支える金融ITのリーディングカンパニー。斉藤 賢哉UFJIS株式会社、オープンプラットフ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/791 2008/11/19 09:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング