Open Source Solution Technology

OpenSSO社内勉強会第?回
Policy Agent for Apache
その1: 概要編

オープンソース・ソリューション・テクノロジ株式会社
2010/1/5
佐藤文優
Copyright © 2010 Open Source Solution Technology

- 1 -

目次
 Apache モジュールの概要

リクエスト処理サイクル– 代表的な Apache モジュール– モジュールソースコードの骨格– Apache API, APR–

 OpenSSO Policy Agent for Apache の概要

機能– ソースコードの入手方法– ソースコードの構成–

Copyright © 2010 Open Source Solution Technology- 2 -Apache モジュールの概要

Copyright © 2010 Open Source Solution Technology- 3 -Apache って何?
 Apache Software Foundation

http://www.apache.org/– 「ASF」と表記するのが一般的–

 Apache HTTP Server

http://httpd.apache.org/– ふつう「Apache」といったらこちらを指す– ASF 設立以降「HTTP (Server)」が付くようになった– ソースアーカイブの名前–

 Apache 1.3 以前: apache-1.3.x.tar.gz
 Apache 2.0 以降: httpd-2.x.x.tar.gz

Copyright © 2010 Open Source Solution Technology- 4 -Apache モジュールの役割り
 Apache HTTP Server から以下を除いたもの:

TCP サーバー実装– 各種ユーティリティ関数–

 Apache API (の一部)
 APR (Apache Portable Runtime) APR-Util (Apache Portable Runtime Utility Library) PCRE (Perl-compatible regular expression library) HTTP サーバーサービス機能のほとんどがモジュール–HTTP のコア実装も Apache モジュールで実装されている
 Apache 上に HTTP 以外のプロトコルも実装可能 (e.g. mod_echo)–

URI書き換え・マッピング、アクセス制御、CGI、フィルタ、プロク
シ、キャッシュ、ロギング、etc.
Copyright © 2010 Open Source Solution Technology- 5 -代表的な Apache モジュール
 URI の書き換えやマッピング–

mod_alias, mod_rewrite, mod_userdir アクセス制御

mod_auth_basic, mod_auth_digest– mod_authn_anon, mod_authn_file, mod_authn_dbd– mod_authz_user, mod_authz_host, mod_authnz_ldap–

 フィルター–

mod_deflate, mod_include

 そのほか–

mod_cgi, mod_cache, mod_proxy, mod_autoindex,
mod_dav, mod_ssl, etc.
Copyright © 2010 Open Source Solution Technology- 6 -Apache のリクエスト処理サイクル
 httpd-x.x.x/server/request.c:ap_process_request_internal()

リクエスト待ち● リクエスト読み込み● リクエスト URI → 実際のアクセス先(ファイル等)へのマッピング● リクエストヘッダーの解析● アクセス制御● レスポンスの MIME タイプ割り当て● 調整 (fixup)● レスポンス送信● ロギング● 後始末 (cleanup)● ①に戻る● 各フェーズ (②〜⑩) に介入するモジュールを実装可能!
Copyright © 2010 Open Source Solution Technology- 7 -Apache が提供する各種 API
 Apache API

Apache HTTP Server 特有に機能を提供– APR に依存した実装になっている– 関数名： ap_XXXX()– APR ライブラリ API

プラットフォームの違いを吸収する各種機能を提供– 関数名: apr_XXXX()– http://ja.wikipedia.org/wiki/Apache_Portable_Runtime–

 APR-Util ライブラリ APIAPR 上に実装された各種ユーティリティ機能を提供– 関数名: apr_XXXX()–Copyright © 2010 Open Source Solution Technology- 8 -OpenSSO Policy Agent for Apache の概要

Copyright © 2010 Open Source Solution Technology- 9 -Agent の正式名称は?
 Sun の情報も、ユーザーの情報も、名前がバラバラ

Apache Agent?
– Agent for Apache?
– SSO Agent for Apache?
– Policy Agent for Apache? (イチオシ)– Web Agent for Apache?
– 結局何?

どれも正解みたい– 勝手に正式名称を考えてみた:
OpenSSO Policy Agent for Apache HTTP Server…長すぎ。略称は何が適当? Policy Agent for Apache で。
–Copyright © 2010 Open Source Solution Technology- 10 -

Policy Agent for Apache の役割り
 Apache の HTTP リクエスト処理サイクルのアクセス制

御フェーズに介入
 Apache に送られた HTTP リクエストから必要な情報(URI とか Cookie とか) を取り出し、OpenSSO にお伺いをたてる OpenSSO からの応答をもとにアクセス許可・拒否あるいはログインページへのリダイレクトを実行

Copyright © 2010 Open Source Solution Technology- 11 -

Policy (Web) Agent ソースツリーの入手
 OpenSSO ソースアーカイブに含まれているものは不完

全(古い?)なので、CVS リポジトリからチェックアウト
https://opensso.dev.java.net/source/browse/opensso/– CVS (pserver) からのチェックアウトには「ユーザー登録しろ」と書かれているが、guest で OK
$ cvs -d :pserver:guest@cvs.dev.java.net:/cvs \checkout opensso/products/webagents–Copyright © 2010 Open Source Solution Technology- 12 -

Policy (Web) Agent ソースツリー構成
 webagents/am/

OpenSSO とのインターフェイスライブラリ– C++ で実装されている– キャッシュ機能や OpenSSO からの通知受信機能もある?
– ビルドすると libamsdk.so と libamsdk_static.a が作られる?
–

 agents/source/apache/ (Apache 2.0 以前用) agents/source/apache22/ (Apache 2.2 以降用)

Apache 用 Policy エージェント (Apache モジュール)– アクセス制御を libamsdk で実装– 仮想ホストごとに On/Off できないなど、必要最小限の機能–

 libamsdk のプロパティ設定または OpenSSO 側で制御する

Copyright © 2010 Open Source Solution Technology- 13 -

Copyright © 2010 Open Source Solution Technology- 14 -