BigAdmin System Administration Portal
特集記事: Sun Java System Access Manager 2005Q4 および Sun Java System Access Manager Policy Agent 2.2 を使用したシングルサインオン
Print-friendly VersionPrint-friendly Version

Sun Java System Access Manager 2005Q4 および Sun Java System Access Manager Policy Agent 2.2 を使用したシングルサインオン

執筆者: Manikandan Chandrasekaran、作成: 2006 年 8 月

概要: このクイックスタートガイドは、Sun Java Enterprise System ソフトウェア上で Web アプリケーションへのシングルサインオン (SSO) を設定できるように設計されています。

免責事項: この記事は、ここで言及するさまざまな Sun 製品の包括的なガイドとなることを目的としているわけではありません。どのような情報についても、http://docs.sun.com に掲載されている公式マニュアルが最終的かつ信頼すべき典拠となります。

Web アプリケーションを開発する際の基本的なセキュリティー要件の 1 つは、認証と承認を行うことです。アプリケーションの種類が増え、複雑さが増すにつれて、認証と承認を実現する方法もまた一層多様化しています。そのため、複数のアプリケーションにアクセスできるユーザーは、複数の識別情報を持つことになりかねません。アプリケーションが単一のユーザーリポジトリを共有する場合も、ユーザー資格がアプリケーション間で伝達されていないため、やはり再ログインが必要になります。その結果、アプリケーション間の SSO は、企業内できわめて重視されるようになってきました。

Sun Java System Access Manager は、アプリケーションのユーザー認証、承認、および SSO を提供する Sun Java Enterprise System ミドルウェアスタックの基幹製品です。Sun Java System Access Manager では、Web アプリケーションを保護するためにエージェントベースのアプローチを使用します。Sun Java System Access Manager Policy Agent ソフトウェアセットは、複数のエージェントで構成されています。個々のエージェントは、Web エージェントと Java 2 Platform, Enterprise Edition (J2EE) エージェントという 2 つのカテゴリに、明確に分類されます。Web エージェントは Web サーバーやプロキシサーバー上のコンテンツを保護します。これに対して J2EE エージェントは、アプリケーションサーバーやポータルサーバーなど、さまざまな配備コンテナ上のコンテンツを保護します。

エージェントは、Web サーバーやアプリケーションサーバーのような、そのエージェントの保護対象である配備されたコンテナで稼働中の保護対象リソースに対する要求を遮断します。このような処理は、コンテナ全体に、または特定アプリケーションに対して設定することができます。エージェントは、cookie に埋め込まれるセッショントークンをチェックし、SSO トークンの妥当性検査を行います。次に、エージェントは、その保護対象リソースへのアクセス権の付与または拒否のいずれかを求める要求を Java System Access Manager Policy Service に対して送信します。これを受けて、その要求の認否に関するポリシーが決定されます。アーキテクチャーの詳細については、Sun Java System Access Manager のマニュアルおよび『Sun Java System Access Manager Policy Agent User's Guide』を参照してください。

Sun Java System Access Manager に使用可能なエージェントについては、「役に立つリンク」セクションのリストを参照してください。

最新版の Sun Java System Access Manager Policy Agent 2.2 には、新機能が多数追加されています (「役に立つリンク」の 『Sun Java System Access Manager Policy Agent 2.2 Release Notes』ドキュメントを参照)。この記事は、新機能のごく一部について具体的に説明し、開発者が第一歩として Web アプリケーション間で単純な SSO をすばやく設定できるようにすることを目的としています。Java System Access Manager とエージェントのその他の機能は、そのあとで使用することができます。このドキュメントでは、次の機能について具体的に説明します。

  1. Sun Java System Web Server、Sun Java System Application Server、および Apache Tomcat 上で稼働中のアプリケーションなど、複数のコンテナ間の SSO
  2. SSO の設定およびエージェントのデバッグによく使用されるスクリプト、構成ファイル、およびログファイルの一部
  3. Java System Access Manager Policy Agent 2.2 に付属する新しいサンプルデモアプリケーションの構成
  4. Java System Access Manager Policy Agent 2.2 の管理権限によらない (非ルート) インストール
  5. Java System Access Manager Policy Agent 2.2 の、プロファイルによる新しいインストール方法

図 1: SSO 対応アプリケーション
(クリックして拡大表示)

このダイアグラムは、Web サーバーとアプリケーションサーバーのように種類の異なるコンテナ間、および Sun Microsystems と Apache Software Foundation のように異なるサプライヤの製品間の SSO について具体的に説明するためにここで用いる単純なテストのシナリオの 1 つを示しています。

SSO を実現するためには、次に示す手順を実行してください。

  1. Sun Java Enterprise System 2005Q4 をインストールします。
  2. Sun Java System Web Server 2005Q4 (6.1) に Sun Java System Web Policy Agent 2.2 をインストールし、構成します。
  3. Sun Java System Application Server 8.1 2005Q4 に Sun Java System Application Policy Agent 2.2 をインストールし、構成します。
  4. Apache Tomcat 5.5 に Sun Java System Application Server Policy Agent 2.2 をインストールし、構成します。
  5. 各アプリケーション間で SSO をテストします。

手順 1: Sun Java Enterprise System 2005Q4 をインストールする

Sun Java System Application Server または Sun Java System Web Server のようなサポート対象 Web コンテナに Java System Access Manager 2005Q4 をインストールします。インストールの際に使用されるデータが次の表に示すようになっていることを確認してください。

表 1: インストール中に入力される重要な Access Manager 構成値
パラメータ
amadmin パスワード
amldapuser パスワード
Access Manager のホスト名 am.india.sun.com
Access Manager のポート番号 80
暗号化鍵
 

注: この例では、am はホスト名、india.sun.com は Java System Access Manager のドメイン名であり、Java System Access Manager が port 80 で稼働しています。ユーザー amadmin およびパスワードで http://am.india.sun.com:/amconsole の Java System Access Manager にアクセスできることを確認してください。

amadmin として Java System Access Manager にログインし、次のような Access Manager のロール (ただし 1 つは例外) を作成します。次のマトリックスに従ってユーザーを作成し、ロールを割り当てます。

表 2: Access Manager 管理コンソールでのロール名 (そのロールに割り当てられるユーザー)
ロール名 ユーザー ID
employee andybobchrisdaveellenfrank
manager andybobchris
everyone andybobchrisdaveellenfrankgina
customer (LDAP グループ)

注: このロールは、LDAP グループ として作成するようにしてください。

chrisellen
admin adminuser
 

手順 2: Sun Java System Web Server 2005Q4(6.1) に Sun Web Server Policy Agent 2.2 をインストールし、構成します。

Web サーバーインスタンスの作成

Java System Web Server の管理サーバーにログインし、たとえば port 80 で稼働する ws.india.sun.com といったデフォルトの Web サーバーインスタンスを起動します。このサーバーインスタンスを SSO のテストに使用します。ブラウザから http://ws.india.sun.com にアクセスできることを確認してください。

Java System Access Manager Policy Agent のインストール

  1. port 80 で稼働中の Web サーバーインスタンスを停止します。
  2. Sun Java System Web Server 2005Q4 (6.1) および正しいオペレーティングシステムに、正しい Access Manager Policy Agent 2.2 を使用します。
  3. エージェント設定を起動し、このエージェントをインストールする Web サーバーインスタンスのディレクトリの場所を入力します。このケースでは、/jes4/opt/SUNWwbsvr/https-ws.india.sun.com です。
  4. Java System Access Manager の構成データ、特に Java System Access Manager のサーバー名 (完全指定のドメイン名)、ポート、および共有秘密フィールドの amldappassword (amadmin パスワードではないことに注意) を、正確に入力します。「Install」をクリックします。
  5. Sun Java System Web Server 管理サーバーを使用して、ws.india.sun.com で稼働中の Web サーバーインスタンスを再起動します。変更を適用する必要がある場合は、右側の角にある「Apply」をクリックして変更を適用します。

Web サーバーインスタンスのテスト

http://ws.india.sun.com の Web サーバーにアクセスします。その際、ログインのプロンプトが表示されるはずです。

Web サーバーへのアクセスに関するポリシーの作成

1. http://am.india.sun.com/amconsole の Access Manager にログインし、「View Policy」をクリックして、新しい URL ポリシーを作成します。

2. このポリシーに、http://ws.india.sun.com/* への GET および POST のアクセスを許可する新しいルールを追加します。

図 2: 新しい URL ポリシーを作成する
(クリックして拡大)

3. Access Manager ロール employee を検索し、このポリシーにサブジェクトとして追加します。

図 3: 「Search」を実行し、サブジェクトとして Access Manager ロール Employee を追加する
(クリックして拡大)

4. 「Finish」をクリックして保存します。

: Access Manager と、Web サーバーを保護するエージェントが同一サーバー上で稼働している場合、Microsoft Internet Explorer では、ユーザーのリダイレクト中にポート番号を差別化する際に問題が生じます。これを修正するには、次のプロパティーを設定する必要があります。エージェントと Access Manager が異なるサーバー上で稼働している場合、あるいは Mozilla または Firefox ブラウザを使用してアクセスしている場合は、次の変更を行う必要はありません。

1. デフォルトのエージェントプロパティーの場所にある次のファイルをバックアップします。

/etc/opt/SUNWam/agents/es6/config/_jes4_opt_SUNWwbsvr_https-ws.india.sun.com/AMAgent.properties

図 4: Generic Sun xterm
(クリックして拡大)

このプロパティーファイルで com.sun.am.policy.agents.config.override_port=true を変更します。

2. Web エージェントのカスタムエラーページを構成することができます。/opt/SUNWwbsvr/docs/error.html という名前の HTML ページを作成します。ユーザー独自のカスタムエラーページを使用するには、Amagent.properties ファイルで、次のプロパティーを変更します。

# アクセス拒否ページの URL。値の指定がない場合、
# エージェントは 403 (Forbidden) の HTTP ステータスを返します。
#
com.sun.am.policy.agents.config.accessdenied.url =http://ws.india.sun.com/error.html

3. AMAgent.properties に変更がある場合、Web サーバーインスタンス ws.india.sun.com の再起動が必要になります。

http://ws.india.sun.com にログインします。誰何を受けた場合、employee ロールのユーザーであれば、そのページへのアクセスが許可されるはずです。


手順 3: Sun Java System Application Server 2005Q4 (8.1) に Sun Java System Application Server Policy Agent 2.2 をインストールし、構成する

1. Sun Java System Application Server 8.2 用の Access Manager Policy Agent 2.2 をダウンロードします (「役に立つリンク」を参照)。ディレクトリを作成し、ダウンロードしたエージェントを解凍します。

2. Access Manager でエージェントプロファイルを作成します。

  • amadmin として http://am.india.sun.com/amserver/console の Access Manager コンソールにログインします。http://am.india.sun.com/amconsole の旧コンソールを使用することもできます。(注: Access Manager 6.3 を使用している場合、コンソールへのアクセスは http://am.india.sun.com/amconsole でのみ可能)
  • 「Access control」をクリックし、「Realm」を選択します。「Subjects」をクリックし、続いて「Agents」をクリックします。新しいエージェント (たとえば TestProfile) を作成します。このデータは、そのエージェントをインストールする際に必要になります。

3. Application Server 管理コンソールにログインして、新しいアプリケーションサーバーインスタンスを作成します。これを test1 と呼ぶことにし、http port 80 で稼働します。この段階で、アプリケーションサーバーノードエージェントを作成することが必要になる場合もあります。

4. Application Server ドメイン管理サーバーとアプリケーションサーバーインスタンス test1 を停止します。

5. エージェントのインストールを開始します。

./agentadmin -install

注: agentadmin に実行権がない場合、chmod +x agentadmin のようにして実行権を追加します。

6. エージェントをインストールする際に正しいデータを入力します。エージェントサマリーシートには次のような例があります。

Application Server Config Directory : 
/jes4/var/opt/SUNWappserver/domains/domain1/config
Application Server Instance name : test1
Access Manager Services Host : am.india.sun.com
Access Manager Services Port : 80
Access Manager Services Protocol : http
Access Manager Services Deployment URI : /amserver
Agent Host name : sunas.india.sun.com
Domain Administration Server Host is remote : false
Application Server Instance Port number: 80
Protocol for Application Server instance : http
Deployment URI for the Agent Application : /agentapp
Encryption Key : GYI3egsTP5FeDHtxf6WuBzj9nQdG2Y
Agent Profile name : TestProfile
Agent Profile Password file name : /jes4/agentpassword
Agent installed on the DAS host for a remote instance : false
Agent and Access Manager on same application server instance : false

(注: Access Manager Policy Agent と Access Manager が同一のサーバーにインストールされている場合、このプロパティーが true になっているはずです)

7. Application Server ドメインサーバーとアプリケーションサーバーインスタンス test1 を起動します。

8. <agent-base>/etc/agentapp.war にある Access Manager Policy Agent アプリケーション agentapp を配備します。このアプリケーションは、Access Manager Policy Agent 2.2 で、アプリケーションサーバー管理コンソールを使用してアプリケーションサーバーインスタンス test1 に対して提供されます。Access Manager Policy Agent がこのアプリケーションを使用することになります。

9. Access Manager J2EE エージェントに付属するサンプル J2EE テストアプリケーション agentsample をアプリケーションサーバーインスタンス test1 に配備します。これは <agent base installdirectory>j2ee_agents/am_as81_agent/sampleapp/dist/agentsample.ear に置かれることになります。

このサンプルアプリケーションは、SSO のテストに使用されます。

10. 独自の J2EE アプリケーションを使用する場合は、web.xml に Access Manager Policy Agent マニュアルで指定されている必須の filter および filter-mapping タグを備える必要があります。

11. <agent base installdirectory>j2ee_agents/am_as81_agent/sampleapp にある readme.txt の指定に従って、Access Manager コンソールを使用してポリシーを作成します。(注: ロールとユーザーは、「手順 1」で作成済みです)

12. アプリケーションサーバーインスタンス test1 を再起動します。

13. 誰何されることなく http://sunas.india.sun.com にアクセスできることを確認します。また、http://sunas.india.sun.com/agentapp にアクセスできること、および Access Manager のログイン画面が表示されることを確認します。employee ロール、manager ロール、または customer グループのユーザー、あるいは india ドメインのユーザーであればログインすることができます。


手順 4: Apache Tomcat 5.5 に Sun Java System Application Server Policy Agent 2.2 をインストールし、構成する

注: Apache Tomcat 5.5 のオペレーションはすべて、非ルートユーザー tomcat として、またグループ tomcat で実行されることになります。またこのデモは、非ルート / 非管理ユーザーとして Access Manager Policy Agent のインストールが可能であることを具体的に説明することを目的としています。

1. tomcat という名称のグループを作成し、このグループに属するユーザー tomcat を作成します。

2. 非ルートユーザー tomcat として Apache Tomcat 5.5 のダウンロードおよびインストールを行います。Apache Tomcat 5.5 のコアモジュールおよび管理 Web モジュールをインストールします。インストールおよび構成については、Apache Tomcat のマニュアルを参照してください。

$CATALINA_HOME/conf/tomcat-users.xml に次のエントリを追加します。

<user name="manager" password="manager" roles="standard,manager" />
<user name="admin" password="admin" roles="admin" />

adminuser というユーザー名で管理アプリケーションにアクセスすることになります。したがって、$CATALINA_HOME/conf/tomcat-users.xmladminuser に関するエントリを別に作成する必要があります。adminuser のパスワードは、Access Manager では使用しないため、ダミーパスワードで構いません。

サンプルファイルを示します。

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="standard"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="adminuser" password="admin123" roles="admin"/>
  <user username="manager" password="manager" roles="standard,manager"/>
  <user username="admin" password="admin" roles="admin"/>
</tomcat-users>

Access Manager で admin というユーザーを作成して Tomcat 管理アプリケーションにアクセスする場合、このユーザー ID はすでに tomcat-users.xml に存在するため、上述の手順は必要ありません。

3. Tomcat を起動し、ユーザー ID manager および admin で Apache Tomcat ホームページ http://tomcat.india.sun.com や、manager/admin アプリケーションにアクセスできることを確認します。

4. Apache Tomcat 5.5 Servlet/JavaServer Pages (JSP) Container 用の Sun Java System Access Manager Policy Agent 2.2 をダウンロードします (「役に立つリンク」を参照)。ディレクトリ <PolicyAgentHome> を作成し、ダウンロードしたエージェントを解凍します。

5. 次の手順に従って、Access Manager でエージェントプロファイルを作成します。

amadmin として http://am.india.sun.com/amserver/console の Sun Access Manager コンソールにログインします。http://am.india.sun.com/amconsole の旧コンソールを使用することもできます。

注: Access Manager 6.3 を使用している場合、コンソールへのアクセスは http://am.india.sun.com/amconsole でのみ可能です。

• 「Access control」をクリックし、「Realm」を選択します。「Subjects」をクリックし、続いて「Agents」をクリックします。新しいエージェント (TomcatProfile) を作成します。このデータは、そのエージェントをインストールする際に必要になります。

• ファイル /export/home/tomcatuser/agentpassword に、プロファイルを作成するために使用するパスワードをコピーします。

6. Tomcat サーバーをシャットダウンします。

7. 「手順 2」で作成したディレクトリからエージェントのインストール <PolicyAgentHome>/j2ee_agents/am_tomcat_agent/bin/agentadmin -install を開始します。サンプルインストールの概要は次のとおりです。

Tomcat Server Config Directory :
/export/home/tomcat/apache-tomcat-5.5.15/conf
Access Manager Services Host : am.india.sun.com
Access Manager Services Port : 80
Access Manager Services Protocol : http 
Access Manager Services Deployment URI : /amserver 
Agent Host name : tomcat.india.sun.com 
$CATALINA_HOME environment variable :
/export/home/tomcat/apache-tomcat-5.5.15 
Tomcat global web.xml filter install : true 
Application Server Instance Port number : 5555
Protocol for Application Server instance : http 
Deployment URI for the Agent Application : /agentapp 
Encryption Key : KEQBXNuosQ5ntb5+lmpo2L1BM9OIK7 
Agent Profile name : TomcatProfile
Agent Profile Password file name : /export/home/tomcat/agentpassword

8. <PolicyAgentHome>/j2ee_agents/am_tomcat_agent/etc/agentapp.war を Apache Tomcat の webapps ディレクトリにコピーします。このアプリケーションは、Access Manager Policy Agent によって要求されます。

9. <PolicyAgentHome>/j2ee_agents/am_tomcat_agent/sampleapp/dist/agentsample.war を Apache Tomcat の webapps ディレクトリにコピーします。このサンプルアプリケーションは、SSO のテストに使用されることになります。

10. <PolicyAgentHome>/j2ee_agents/am_tomcat_agent/sampleapp/readme.txt に記載されている手順に従って、Tomcat 上で稼働するアプリケーションについて Access Manager でポリシーを作成します。

注: ロールおよびユーザーは Sun Java System Application Server に Access Manager Policy Agent をインストールする際に作成済みのため、Tomcat アプリケーション関連の URL についてポリシーを作成する際に、これをやり直す必要はなく、再利用することができます。

11. <PolicyAgentHome>/j2ee_agents/am_tomcat_agent/sampleapp/readme.txt ファイルに記載されている手順に従って、<PolicyAgentHome>/j2ee_agents/am_tomcat_agent/agent_001/config/AMAgent.properties ファイルを変更します。

  com.sun.identity.agents.config.filter.mode[admin]=ALL
  com.sun.identity.agents.config.filter.mode[manager]=ALL
  com.sun.identity.agents.config.filter.mode[host-manager]=ALL
  com.sun.identity.agents.config.filter.mode = J2EE_POLICY

12. Tomcat の admin および manager アプリケーションも Access Manager Policy Agent の保護対象となるので、『Conditional Post-Installation Steps for J2EE Agents in Policy Agent 2.2』に記載されている手順に従います。<TOMCAT-Home>/server/webapps にある manageradmin、および host-manager の Web アプリケーションの web.xml を次のように変更します。

	
  id=manager,ou=role,dc=india,dc=sun,dc=com
  id=admin,ou=role,dc=india,dc=sun,dc=com

agentsample アプリケーションの web.xml も、dc=iplanet,dc=com をインストールされたレルムに変更するために修正が必要です。

注: 変更は Access Manager のレルムに従って行なってください。Access Manager が dc=india,dc=sun,dc=com というレルムでインストールされているので、上記の変更を行いました。

13. Apache Tomcat サーバーを起動し、次のロケーションで稼働している Tomcat アプリケーションにアクセスします。

  • http://tomcat.india.sun.com/agentsample
  • http://tomcat.india.sun.com
  • http://tomcat.india.sun.com/admin/
  • http://tomcat.india.sun.com/manager/html

SSO のテスト

Access Manager に amadmin としてログインし、次のポリシーが作成済みであることを確認します。

表 3: Access Manager 管理コンソールで作成する必要のあるポリシー
ポリシー方針 ルール 被認証者 (ロール名)
1

http://sunas.india.sun.com/agentsample/jsp/*

http://sunas.india.sun.com/agentsample/invokerservlet

http://sunas.india.sun.com/agentsample/protectedservlet

http://sunas.india.sun.com/agentsample/securityawareservlet

http://sunas.india.sun.com/agentsample/unprotectedservlet

india (組織全体)
2

http://tomcat.india.sun.com/agentsample/jsp/*

http://tomcat.india.sun.com/agentsample/protectedservlet

http://tomcat.india.sun.com/agentsample/securityawareservlet

india (組織全体)
3

http://sunas.india.sun.com/agentsample/urlpolicyservlet

customer (LDAP グループ)
4

http://tomcat.india.sun.com/agentsample/urlpolicyservlet

customer (LDAP グループ)
3

http://tomcat.india.sun.com/admin/*

admin
4

http://tomcat.india.sun.com/manager/*

manager
5

http://sunws.india.sun.com/*

employee
 

次のアクセス制御マトリックスに従って、さまざまなアプリケーションに対する SSO をテストします。

表 4: さまざまなシナリオをテストするためのアクセス制御マトリックス
ロール名 ユーザー ID アクセス可能な URL
employee andybobchrisdaveellenfrank

http://tomcat.india.sun.com/agentsample/securityawareservlet

http://sunas.india.sun.com/agentsample/securityawareservlet

http://sunws.india.sun.com

manager andybobchris

http://tomcat.india.sun.com/agentsample/protectedservlet

http://sunas.india.sun.com/agentsample/protectedservlet

http://tomcat.india.sun.com/manager

india ドメインのすべてのユーザー andybobchrisdaveellenfrankginaadminuser

http://tomcat.india.sun.com/agentsample

http://sunas.india.sun.com/agentsample

customer (LDAP グループ) chrisellen

http://tomcat.india.sun.com/agentsample/urlpolicyservlet

http://sunas.india.sun.com/agentsample/urlpolicyservlet

admin adminuser

http://tomcat.india.sun.com/admin

 

Access Manager Policy Agent に付属する agentsample アプリケーションは、配備記述子に Access Manager 固有のフィルタタグを備えています。J2EE アプリケーションを保護するために Access Manager Policy Agent を使用する必要がある場合、これらのフィルタを追加することが必要になります。個々のフィルタの詳細については、サンプルアプリケーションを参照してください。


まとめ

この記事では、Sun Java System Access Manager Policy Agent および Sun Java System Access Manager を使用する異なる Web コンテナ間での SSO の設定と構成について具体的に説明してきました。Sun Java System Access Manager と SSO の適切な出発点として役立ててください。ここから Java System Access Manager Policy Agent および Java System Access Manager のより高度な機能へと展開していくことができます。


トラブルシューティングのヒント

1. ポリシーエージェントのインストールおよび構成後、保護対象の Apache Tomcat ホームページを閲覧できなくなった場合、/export/home/tomcat のすべてのファイルの所有者がユーザー tomcat:tomcat になっていることを確認してください。

2. 変更前に、AMAgent.properties ファイルのバックアップを作成してください。ホットスワップフラッグが有効でない場合、AMAgent.properties ファイルを変更後、Web コンテナの再起動が必要になります。

3. AMAgent.propertiescom.iplanet.services.debug.level=message プロパティーを設定することによって、ポリシーエージェントでのデバッグを有効にすることができます。


役に立つリンク

Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin
  
 
 
 
Would you recommend this Sun site to a friend or colleague?
Contact About Sun News & Events Employment Site Map Privacy Terms of Use Trademarks Copyright Sun Microsystems, Inc.