水曜日 1 07, 2009

J2EE Agent 2.2 の設定手順例


本日の作業の備忘録として書き残しておきます。

使った環境は以下のとおり。


  • machineA: Web Server 7.0 上に Access Manager 7.1 を配備済み。
  • machineB: Tomcat 5.5 上に Web アプリケーション /community を配備済み。
    このアプリケーションをプロテクトして、特定のユーザーにのみアクセスを許可する。


  1. machineA 上で、Access Manager にログインし、エージェントプロファイルを作成。

    名前:agent
    パスワード:password

  2. machineB 上で、あとで行うエージェントのインストール用に、パスワードファイルを作成。

    # echo "password" > /tmp/passwd.txt

  3. J2EE Agent for Tomcat 5.5 をダウンロードし、machineB にインストール。

    # pkgadd -d . SUNWamtc
    # cd /opt/j2ee_agents/am_tomcat_agent/bin
    # ./agentadmin --install
    (デフォルト以外の値を入力した箇所のみ記載。)
    Enter the Tomcat Server Config Directory Path
    [/opt/jakarta-tomcat-5.5.9/conf]: /usr/home/wrldsrvr/apache-tomcat-5.5.17/conf
    Access Manager Services Host: machineA
    Enter the Agent Host name: machineB
    Enter the $CATALINA_HOME environment variable: /usr/home/wrldsrvr/apache-tomcat-5.5.17
    Enter the port number for Application Server instance [80]: 8080
    Enter the Agent Profile name: agent
    Enter the path to the password file: /tmp/passwd.txt

  4. エージェントのインストールがおわったら、agent_00\*/config/AMAgent.properties を編集する。

    プロテクトの対象外となるパスを指定。
    com.sun.identity.agents.config.notenforced.uri[0] = /ws/\*

    フィルタモードは、URL_POLICY にする。(以下の行を追加)
    com.sun.identity.agents.config.filter.mode[community]=URL_POLICY


  5. /opt/j2ee_agents/am_tomcat_agent/etc/agentapp.war を Tomcat に配備する。
  6. Tomcat を再起動する。
  7. Access Manager にログインし、「allowedusers」というグループを作成し、
    アプリケーションへのアクセスを許可するユーザーを登録する。(例えば、user01 を登録しておく)
  8. 次の条件でポリシーを作成する。

    リソース:http://machineB/community/\*
    対象:Access Manager アイデンティティー対象 グループ「allowedusers」

  9. この状態で、http://machineB/community/\* にアクセスすると、http://machineA/amserver/UI/Login にリダイレクトされるので、user01 でログインすると、http://machineB/community/\* へアクセスできる。このとき、他のユーザーアカウントでログインすると 403 error でアプリケーションへのアクセスは拒否される。Access Manager でのログインに失敗した場合もアプリケーションへのアクセスはできない。

    かなり簡易的ではあるが、これでアプリケーションへのアクセスをポリシーで制御できる。

金曜日 12 19, 2008

ssoadm コマンドを使ってポリシーエージェント 3.0 のプロファイルを OpenSSO に設定する方法

この方法については、以前からこちらのページに載っているので、すでにご覧になっている方も多いと思いますが、 2008年5月の時点で書かれているために、製品名やコマンド名が古いままですね。 やはり、現状に即して、しかも日本語で書かれた手順書があった方が 日本のユーザーにとってはより便利だと思うので、上記の wiki ページの内容をベースにしつつ、 実際に、OpenSSO Enterprise 8.0 と Web Agent 3.0 for Webserver 7 を使って設定した結果を元に、手順をまとめてみました。

使用した環境は以下のとおりです:

  • マシン1:machine1.example.com
    • Glassfish V3 がインストール済み。(ポート 8080)
    • ここに OpenSSO を配備する。
  • マシン2:machine2.example.com
    • Web Server 7.0 がインストール済み。(ポート 80)
    • Web Agent 3.0 をインストールし、この web server をプロテクトする。
  1. こちら から、OpenSSO 8.0 をダウンロードし、こちら から、Web Agent 3.0 for Webserver 7 for Solaris Sparc をダウンロードします。
  2. マシン1 上で、OpenSSO 8.0 を配備します。 (今回はエージェントの設定がメインなので、OpenSSO の設定手順は省略します。)
  3. マシン2 上で、sjsws_v70_SunOS_sparc_agent_3.zip を解凍します。
  4. web_agents/sjsws_agent/bin/ ディレクトリに移動し、 agentadmin を実行可能にします。
    
       #chmod 755 agentadmin
    
    
  5. マシン2 で、agentadmin --install を実行します。
    
    Sun Java System Web Server Config Directory :
    /var/opt/SUNWwbsvr7/https-machine2.example.com/config
    OpenSSO server URL : http://machine1.example.com:8080/opensso
    Agent URL : http://machine2.example.com:80
    Agent Profile name : WS7Agent
    Agent Profile Password file name : /export/agentpw.txt
    
    
  6. マシン2 の Web Server を再起動します。
    再起動後に、http://machine2.example.com にアクセスしてみると、
    エージェントによりプロテクトされているために、Web Server のトップぺージは表示されません。



      これで、ポリシーエージェントが機能していることは確認できました。

    次に、本稿での本題である、ssoadm コマンドを用いての エージェントの作成を行います。
  7. マシン1 で、opensso_enterprise_80.zip から、opensso/tools/ssoAdminTools.zip を抽出し、さらに ssoAdminTools.zip を解凍します。
    
    # cd /workspace
    # unzip openssoenterprise_80.zip opensso/tools/ssoAdminTools.zip 
    # cd opensso/tools
    # unzip ssoAdminTools.zip
    
    
  8. JAVA_HOME を指定して、setup コマンドを実行します。(Windows 環境では、setup.bat コマンドを実行します。)
    
    #  export JAVA_HOME=/usr/jdk/jdk1.5.0_16
    # ./setup
    Path to config files of OpenSSO server (example: /opensso): 
    Debug directory is /tmp.
    Log directory is /tmp.
    The version of this tools.zip is: Enterprise 8.0 Build 6(2008-October-31 09:07)
    The version of your server instance is: Enterprise 8.0 Build 6(2008-October-31 09:07)
    #
    
    
    最初に、OpenSSO の設定ディレクトリの場所を聞かれますので、 OpenSSO の設定を行った際に指定したディレクトリを入力します。
    残りのプロンプトに対しても適切な値を指定すると、上記のように設定が完了し、 <設定ディレクトリ>/bin の下に ssoadm などのコマンドラインツールが用意されます。
    (デフォルトでは、opensso/bin の下に置かれます。)
  9. sso コマンドのあるディレクトリに移動します。
    このディレクトリに、マシン 2 でエージェントをインストールしたときに生成された OpenSSOAgentConfiguration.properties をコピーします。
  10. OpenSSOAgentConfiguration.properties を編集し、最後に以下の行を加えます。
    
    userpassword=エージェントのパスワード(/export/agentpw.txt に書いた値)
    
    
    必要に応じて、ファイル内の他の属性の値を変更、もしくは値が入ってない箇所について値を入れます。
    そして、最終的に値を入れていない行については、削除します。
    注意:値がセットされていない行を残したままだと、次の手順で ssoadm の操作が失敗するかもしれません。(実際に、私が試した場合は、以下の行に値が入ってない状態だとエラーになりました。)
    
    com.sun.identity.agents.config.debug.level =
    com.sun.identity.agents.config.auth.connection.timeout =
    
    
  11. amadmin のパスワードを平文形式で /export/passwd.txt に書き、 root ユーザーに対してのみ read-only とします。
    
    #chmod 400 /export/passwd.txt
    
    
    そして、以下のコマンドを実行します。 
    
    # ./ssoadm create-agent -e / -b WS7Agent -t WebAgent -u amadmin -f /export/passwd.txt -D OpenSSOAgentConfiguration.properties
    
    エージェント設定が作成されました。
    #
    
    
    これで、エージェントのプロファイルが OpenSSO 上に作成されました。

    確認には、list-agents サブコマンドを用います。
    
    # ./ssoadm list-agents -e / -u amadmin -f /export/passwd.txt
    
    SecurityTokenService (id=SecurityTokenService,ou=agentonly,o=openssosp)
    wsc (id=wsc,ou=agentonly,o=openssosp)
    test2 (id=test2,ou=agentonly,o=openssosp)
    WS7Agent (id=WS7Agent,ou=agentonly,o=openssosp)
    agentAuth (id=agentAuth,ou=agentonly,o=openssosp)
    test3 (id=test3,ou=agentonly,o=openssosp)
    wsp (id=wsp,ou=agentonly,o=openssosp)
    test (id=test,ou=agentonly,o=openssosp)
    
    #
    
    
    このように WS7Agent が作成されていることが確認できます。
    また、amadmin で、http://machine1.example.com:8080/opensso にログインし、 「アクセス制御」->「/ (最上位のレルム)」->「エージェント」と順にクリックすると、 以下のように WS7Agent が作られていることが確認できます。




    エージェントの設定内容を確認するには、show-agent サブコマンドを用います。
    
    # ./ssoadm show-agent -e / -b WS7Agent -u amadmin -f /export/passwd.txt
    
    (出力結果の一部を抜粋)
    :
    com.sun.identity.agents.config.iis.filter.priority=HIGH
    com.sun.identity.agents.config.agent.logout.url[0]=
    com.sun.identity.agents.config.local.log.size=52428800
    com.sun.identity.agents.config.cookie.name=iPlanetDirectoryPro
    com.sun.identity.agents.config.fqdn.check.enable=true
    com.sun.identity.agents.config.debug.file.size = 10000000
    :
    #
    
    
    このようにエージェントの属性が表示されます。

    属性の値を変更するには、update-agent というサブコマンドを用います。
    例えば、com.sun.identity.agents.config.debug.file.size の値を 20000000 にするには、次のようにコマンドを実行します。
    
    # ./ssoadm update-agent -e / -b WS7Agent -u amadmin -f /export/passwd.txt -s -a "com.sun.identity.agents.config.debug.file.size=20000000"
    
    エージェント設定が更新されました。
    #
    
    
    これで属性値が更新されました。show-agent サブコマンドで確認してみると、
    
    #./ssoadm show-agent -e / -b WS7Agent -u amadmin -f /export/passwd.txt  | grep debug.file.size
    com.sun.identity.agents.config.debug.file.size=20000000
    #
    
    
    このように値が変更されていることが確認できます。

    ちなみに、エージェントの削除は、delete-agents サブコマンドを用います。
    
    # ./ssoadm delete-agents -e / -s test -u amadmin -f /export/passwd.txt
    
    次のエージェントが削除されました。
        test
    #
    
    
    注意:エージェントを作成、変更、削除した場合は、変更内容を反映させるために Web Server を再起動してください。
  12. マシン2 で Web Server を再起動し、http://machine2.example.com/ にアクセスします。
    今度は、マシン1の OpenSSO のログインページ (http://machine1.example.com:8080/opensso) にリダイレクトされるはずです。



    ここまで来ればもう一息。残る作業は、OpenSSO 上でのポリシーの定義です。
  13. (ポリシー定義についての細かい手順についての説明はここでは省きます。)
    今回、定義したポリシーは次のとおりです。
    
    ルール:
     サービスタイプ:URL ポリシーエージェント
     リソース名:http://machine2.example.com:80/\*
     アクション: GET 許可  POST 許可
    対象: OpenSSO アイデンティティー対象
        選択したユーザー:amadmin のみ
    条件:なし
    応答プロバイダ:なし
    
    
    また、検証用に amadmin 以外に amuser1 というユーザーを作成しておきます。

    この状態で、もう一度 http://machine2.example.com にアクセスし、 リダイレクトされた OpenSSO のログインページで、 amadmin でログインすると、



    このように、Web Server のトップページが表示されます。

    ブラウザを再起動して、http://machine2.example.com にアクセスし、 リダイレクトされた OpenSSO のログインページで、 今度は、amuser1 でログインしてみます。
    amuser1 は、ポリシー定義で、http://machine2.example.com/\* への アクセスを許可した対象に含まれていないので



    このように、アクセス不可となり、ポリシーの定義にしたがって、 http://machine2.example.com/\* へのアクセスの可否が 制御されていることが確認できます。
最後に:
OpenSSO 8.0 および関連するポリシーエージェントのマニュアルは、 以下のサイトにありますので、 ssoadm コマンドやエージェントに関連するサブコマンドについての 情報はこちらで参照できます。(ドキュメントは英語で書かれています。)
http://docs.sun.com/app/docs/coll/1767.1?l=ja
リリースノートのみ、日本語マニュアルがあります。
http://docs.sun.com/app/docs/coll/1905.1?l=ja

About

hanaki

Search

Archives
« 3月 2015
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    
       
今日