社内システムのセキュリティとアクセス制御の常識:企業システムの常識をJBossで身につける(9)(2/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
JBossのセキュリティ管理はどうなっている?
JBossのセキュリティ管理は2つのプロジェクトを使うことで実現されます。以前は「JBoss Security」というプロジェクトでしたが、以下は現在最新のプロジェクトです。
| PicketBox | JBossが提供するセキュリティの基盤API群 |
|---|---|
| PicketLink | PicketBoxを使用してセキュリティ管理の実現手段を提供 |
| 表1 最新のJBossのセキュリティ管理のプロジェクト | |
「PicketBox」は、JBoss Seamの次期バージョンである3から標準のセキュリティ基盤として採用される予定で、以前は「JBoss Security」と呼ばれていました。
「PicketLink」はPicketBoxの提供するセキュリティの基盤を利用し、具体的なセキュリティの実現手段を用意しています。PicketLinkは以前からJBoss Securityにあったいくつかの実用的なコンポーネントを取りまとめたものです。
PicketLinkが提供する具体的なセキュリティの実現手段は、以下のコンポーネントで構成されます。
| IDM | ・認証情報で用いる認証情報の管理に対するオブジェクトモデルを提供するコンポーネント ・LDAPやRDBMSのような異なった認証情報を利用したアプリケーションの認証作業を連携させる目的もある |
|---|---|
| Federated Identity | ・統合された認証およびシングルサインオンを実現するためのサポートを提供しているコンポーネント ・OASIS(*注1)のSAML(*注2)やWS-Trust(*注3)、OpenID(*注4)をサポート |
| AuthZ | ・Javaアプリケーションの認証フレームワークを基盤としたコンポーネント |
| XACML | ・アクセスコントロールをカスタマイズできる、OASIS提供のXACML(*注5)の機能を提供しているコンポーネント |
| Negotiation | ・デスクトップSSO(*注6)を基にした、SPNego(*注7)や認証用プロトコルであるKerberosを提供するコンポーネント |
| 表2 PicketLinkのコンポーネント一覧 | |
- Organization for the Advancement of Structured Information Standardsの略称。XMLやWebサービスなどに関する国際的な標準化団体
- Security Assertion Markup Languageの略称。ネット上などでユーザーの認証に対する情報を安全に処理するためのXMLベースの言語仕様
- SAMLなどの認証、セキュリティ情報をネット上で移動・交換・処理するための技術
- 1つのIDを用いて多種多様なネット上のサービスの認証を可能にする認証プロトコル
- eXtensible Access Control Markup Languageの略称
- Single Sign Onの略称。Windowsの認証を利用したシングルサインオン
- Simple and Protected GSSAPI Negotiation Mechanismの略称。認証プロトコル間をまとめるセキュリティ・パッケージ
今回は、アクセスコントロールを用いたセキュリティに焦点を当てるため、アクセスコントロールを行えるプロジェクトを作成して、ID管理の動きを理解し、その後、高度なアクセスコントロールの実現方法としてXACMLについて説明します。
JBossが持つ認証機能を実装するには
JBossが持つ認証機能を実際に作って確認していきます。今回は最新のPicketLinkのIDPコンポーネントを使わず、これまでの連載で構築した環境を使って認証機能を作ります。
「JBoss SX」とは
JBoss 5.1.0 GAに付属しているライブラリに「JBoss SX」というものがあります。「JBoss SX」は、PicketLinkのIDPコンポーネントの前のバージョンと考えてください。最新のものではありませんが、認証機能を理解するうえでは最新のものと変わりません。
web.xmlの編集
ではこれから、JBossでのベーシック認証機能によるアクセスコントロールについて、サンプルを用いつつ説明します。まずこのサンプルでは事前の環境設定として、本連載2回目「“全部入り”のEclipseで学ぶ統合開発環境の常識」のサンプルを作成する前までのSeamプロジェクトを使用します。
プロジェクト名は「sampleSX」です。今回はSeamプロジェクトのhome.seam画面にBASIC認証をかけるサンプルを作成します。
「sampleSX/WebContent/WEB-INF/web.xml」ファイルを下記のように編集します(赤字が追記部です)。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>sampleSX</display-name>
……【中略】……
<security-constraint>
<display-name>raw XHTML ドキュメントを禁止</display-name>
<web-resource-collection>
<web-resource-name>XHTML</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Faces Servlet</web-resource-name>
<description></description>
<url-pattern>/home.seam</url-pattern>
<!-- ↑【1】ベーシック認証をかける画面を設定 -->
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
<!-- ↑【2】認証を許可させる【4】と同一の権限(JBossではデフォルトの権限がJBossAdminなので、今回はこれを使用します)を設定 -->
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<!-- ↑【3】ログイン設定として、ベーシック認証を指定 -->
<realm-name>JBoss SX Auz</realm-name>
</login-config>
<security-role><role-name>JBossAdmin</role-name></security-role>
<!-- ↑【4】認証を許可させる【2】と同一の権限を設定 -->
</web-app>
jboss-web.xmlの編集
「sampleSX/WebContent/WEB-INF/jboss-web.xml」を下記のように編集してください。
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
seam.jboss.org:loader=sampleSX
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
<security-domain>java:/jaas/jmx-console</security-domain>
<!-- ↑【1】 -->
</jboss-web>
【1】でデフォルト設定されているjmx-consoleのログイン方法を設定しています(このほかのログインの方法は、C:\JBossTools\jboss-eap\jboss-as5\server\default\conf\login-conf.xmlを参照してください)。
そのほかの設定
「C:/JBossTools/jboss-eap/jboss-as5/server/default/conf/props」直下の「jmx-console-roles.properties」「jmx-console-users.properties」をコピーして下記の通り「src/main」直下に張り付けてください。
ちなみに、jmx-console-roles.propertiesとjmx-console-users.propertiesのファイルの中身は以下のようになっています。
# A sample roles.properties file for use with the UsersRolesLoginModule admin=JBossAdmin,HttpInvoker
これは、adminユーザーがJBossAdmin権限と、HttpInvoker権限を持つことを意味します。
# A sample users.properties file for use with the UsersRolesLoginModule admin=admin
これは、adminユーザーが「admin」というパスワードを所有することを意味します。
以上が、JBoss SXのベーシック認証機能をhome.seam画面に適用させてアクセスコントロールを行うためのサンプルの設定です。次ページでは、実際に動かして試してみます。
Copyright © ITmedia, Inc. All Rights Reserved.


