前へ     目次     索引     DocHome     次へ     
iPlanet Web Server, Enterprise Edition プログラマーズガイド



第 1 章   概要


iPlanet Web Server 6.0 はさまざまなアプリケーションプログラミングインタフェース (API) とプログラミング技術をサポートしており、次のような機能を実現しています。

  • クライアントの要求に応じて動的なコンテンツを生成する

  • サーバの動作を変更し、拡張する

  • サーバに保存された内容を変更する

この章では、サーバでサポートするさまざまな API とプログラミング技術について、その概要を説明します。 それぞれの API やプログラミング技術の詳細については、このマニュアルの該当する章または個別のマニュアルを参照してください。

この章には次の節があります。



構成ファイル

サーバマネージャおよびクラスマネージャインタフェースを使用する代わりに、構成ファイルを編集することによって、 iPlanet Web Server を構成することができます。 構成ファイルの大半は、server_root/https-server_id/config ディレクトリにあります (server_root はサーバルートを、server_id はサーバ id を示す)。 たとえば、Windows NT の C:\iPlanet\Servers\ に iPlanet Web Server がインストールされている場合、サーバの構成ファイル myserver.com は次のディレクトリにあります。

C:\iPlanet\Servers\https-myserver.com\config

主な構成ファイルはmagnus.confserver.xmlobj.conf、および mime.types ですが、この他にも構成ファイルがあります。 構成ファイルの概要は、第 2 章「構成ファイル」を参照してください。

magnus.confserver.xmlobj.conf、および mime.types ファイルの詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。

iPlanet Web Server 4.x 以降の構成ファイルの変更点については、付録 A「iWS 4.x と 6.0 の設定の変更点」を参照してください。



iPlanet Web Server 6.0 の API



この節では、iPlanet Web Server 6.0 でサポートするさまざまな API とプログラミング技術について概要を説明し、iPlanet Web Server 6.0 でその機能を活用する方法を説明します。さらに、それらの詳細情報の参照先を示します。

iPlanet Web Server で拡張や変更ができる主なカテゴリには、次のものがあります。

  • 要求への応答 (またはその一部) を動的に作成する。 このカテゴリに該当する API とプログラミング技術は次のとおり

  • サーバプラグインを実装し、サーバの動作を変更する。 サーバプラグインの多くは Netscape Server API (NSAPI) を使って記述される。 サーバプラグインを記述するための API もある。たとえば、サーバリソースへのアクセスを制御するアクセス制御リスト API (ACLAPI) など

    サーバの動作を変更する API は次のとおり。

  • リソースとディレクトリの追加や削除、変更によって、サーバの内容を変更する。 変更のために、リモートファイルを手作業で編集する


サーバによる HTML タグの構文解析

iPlanet Web Server 6.0 では、サーバサイドのタグをユーザが独自に定義する C 言語の API を提供しています。 定義したタグは、 configinclude などの標準的なサーバサイドのタグに追加して、 HTML ファイル内で使用することができます。


サーバによるタグの構文解析を有効にする

サーバサイドのタグの構文解析は、クラスマネージャの「Content Management」タブにある「Parse HTML」ページで、有効または無効にすることができます。 このページでは、サーバサイドの HTML タグの構文解析を無効にすることができます。また、exec タグが有効であるかどうかにかかわらず、構文解析を有効にすることもできます。 このページでは、全ファイルを構文解析するか、または拡張子が .shtml のファイルだけを構文解析するかを指定することもできます。

magnus.conf の指令でサーバサイドのタグの構文解析を有効にする場合、Windows NT では次のようになります (install_dir はインストール先のディレクトリを示す)。


Init funcs="shtml_init,shtml_send" shlib="install_dir/bin/https/bin/Shtml.dll" NativeThread="no" fn="load-modules"

UNIX の場合、ファイルが Shtml.so であることを除けば指令は同じです。

obj.conf の指令でサーバサイドのタグの構文解析を有効にする場合は、次のようになります。


Service fn="shtml_send" type="magnus-internal/parsed-html" method="(GET|HEAD)"

ファイルの拡張子が .shtml 以外のサーバサイドのタグに対して、構文解析を有効にするには、mime.types ファイルの適切な行に拡張子を追加します。 たとえば次の行を mime.types に記述すると、.shtml または .jbhtml の拡張子を持つファイルでサーバサイドのタグが構文解析されます。

type=magnus-internal/parsed-html exts=shtml,jbhtml


参照先

サーバによるタグの構文解析の定義と使い方については、第 3 章「サーバによる HTML タグの構文解析」を参照してください。


CGI

CGI (Common Gateway Interface) はサーバ上で稼働するプログラムで、応答を作成して要求元のクライアントに返します。 CGI プログラムは、C、C++、Java、Perl などのさまざまな言語で記述することができ、シェルスクリプトで記述することもできます。 CGI は URL を呼び出すことによって実行されます。

iPlanet Web Server は、バージョン 1.1 の CGI 仕様に対応しています。

サーバでは、 CGI のスクリプトやプログラムを実行するたびにプロセスを起動するので、このプログラミングメソッドは、サーバ側にかかるコストが高くなる方式です。


CGI を有効にする

iPlanet Web Server には CGI プログラムを識別するために、次の 2 つの方法が提供されています。


CGI 用のディレクトリを指定する
CGI プログラムを含むディレクトリ (CGI プログラムだけが格納されている) を指定するには、クラスマネージャの「Programs」タブにある「CGI Directory」ページを使用します。 サーバは、このディレクトリにあるすべてのファイルを CGI プログラムとして扱います。

各 CGI ディレクトリのファイル obj.conf には NameTrans 指令が記述されていて、cgi 名とそのディレクトリのリソースに対する要求とを関連付けています。 この指令は、クラスマネージャインタフェースの CGI ディレクトリを指定すると obj.conf に自動的に追加されます。また、必要に応じて手動で obj.conf に追加することもできます。

たとえば次のような命令があると、http://server-name/cgi-local にあるリソースへのすべての要求は、C:/iPlanet/Servers/docs/mycgi のディレクトリにある CGI プログラムを呼び出すものであると解釈されます (server-name はサーバ名を示す)。

NameTrans fn="pfx2dir" from="/cgi-local" dir="C:/iPlanet/Servers/docs/mycgi" name="cgi"

obj.conf ファイルには、次のような名前のオブジェクトが指定されている必要があります。


<Object name="cgi">
ObjectType fn="force-type" type="magnus-internal/cgi"
Service fn="send-cgi"
</Object>

このオブジェクトの記述は、 obj.conf から削除しないでください。 この記述を削除すると、クラスマネージャインタフェースで CGI ディレクトリを指定した場合でも、手動で NameTrans 指令を obj.conf に追加した場合でも、サーバはディレクトリを認識しなくなります。


CGI ファイルの拡張子を指定する
クラスマネージャの「Programs」タブにある「CGI File Type」ページで、ファイルのあるディレクトリに関わりなく特定の拡張子を持つすべてのファイルを CGI プログラムとして扱うようサーバに設定します。デフォルトの CGI 拡張子は、.cgi.batおよび .exe です。

CGI プログラムを示す拡張子を変更するには、mime.types の次の行で拡張子を変更します。 mime.types を編集したら、サーバを必ず再起動します。

type=magnus-internal/cgi exts=cgi,exe,bat

該当する拡張子の付いているすべてのファイルを、 サーバがCGI プログラムと見なす場合には、obj.conf ファイルに次のような Service 指令が記述されています。

Service fn="send-cgi" type="magnus-internal/cgi"


CGI プログラムの実行環境をカスタマイズする (UNIX のみ)

実行環境をカスタマイズする前に、suid Cgistub をインストールし、ルートとして実行する必要があります。

  1. スーパーユーザとしてログインする

    su

  2. Cgistubprivate ディレクトリを作成する (server_rootはサーバルートを示す)

    cd server_root/https-instance

    mkdir private

  3. Cgistubprivate ディレクトリにコピーする

    cd private

    cp ../../bin/https/bin/Cgistub .

  4. private の所有者をサーバのユーザに設定する

    chown user .

  5. private にパーミッションを設定する

    chmod 500 .

  6. Cgistub の所有者を root に設定する

    chown root Cgistub

  7. Cgistub にパーミッションを設定する

    chmod 4711 Cgistub

  8. obj.confsend-cgi SAF への各参照に user パラメータを指定することができる。

    Service fn="send-cgi" user="user" (userはユーザを示す)

    変数の使用も可能。 たとえば server.xml で、VS (仮想サーバ) 要素を次のような VARS サブ要素にすることもできる

    <VARS user="user"/>

    これにより、obj.conf で次のような send-cgi SAF の行を記述することができる

    Service fn="send-cgi" user="$user"

    send-cgiserver.xml、および obj.conf の詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照。

  9. サーバを再起動して変更を適用する



      Cgistubserver_root/https-instance/private のディレクトリにインストールすることをお勧めします (server_root はサーバルート、instance はインスタンスを示す)。 これ以外の場所にインストールする場合は、Cgistub へのパスを magnus.confinit-cgi 関数に指定しておく必要があります。 詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。

     





      suid Cgistub プログラムは、 NFS マウントにはインストールできない場合があります。 suid Cgistub を使用する場合は、サーバのインスタンスをローカルのファイルシステムにインストールする必要があります。

     



Cgistub には次のようなセキュリティ上の制限があります。

  • CGI プログラムを実行するユーザには 100 以上の uid が必要。 これにより、Cgistub を使用して第三者がルートとしてアクセスすることを防ぐ

  • CGI プログラムは実行者であるユーザが所有し、所有者以外のユーザが書き込めない設定になっている必要がある。 これにより、第三者がプログラムに入り込んでリモートで実行することが困難になる

  • Cgistub は UNIX の待機ソケットを作成し、アクセス権を 0700 に設定する



      多種多様な UNIX マシン間でのソケットのアクセス権の制限については、考慮されていません。これは SunOS/Solaris の現行バージョンも同様です。 Cgistub の不正な利用を防ぐには、magnus.conf TempDir 指令を使って、サーバの一時ディレクトリをサーバのユーザだけがアクセスできる場所に変更します。 詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。

     



Cgistub をインストールすると、次の方法で実行環境をカスタマイズできます。


独自の CGI ディレクトリ、および仮想サーバの UNIX ユーザとグループを指定する
仮想サーバの CGI プログラムが他のユーザの作業に影響を及ぼさないようにするには、プログラムを独自のディレクトリに格納し、独自の UNIX ユーザとグループのアクセス権で実行する必要があります。

最初に、UNIX のユーザとグループを作成します。 ユーザとグループの正確な作成手順は、オペレーティングシステムによって異なります。 使用しているオペレーティングシステムのマニュアルを参照してください。

次に、以下の手順に従って仮想サーバの cgi-binディレクトリを作成します。

  1. スーパーユーザとしてログインする

    su

  2. 仮想サーバのディレクトリに移動する (vs_dir は仮想サーバのディレクトリを示す)

    cd vs_dir

  3. cgi-bin ディレクトリを作成する (user はユーザを、group はグループを示す)

    mkdir cgi-bin

    chown user:group cgi-bin

    chmod 755 cgi-bin

ここで、次のいずれかの方法で仮想サーバの CGI ディレクトリ、ユーザ、およびグループを設定できます。

  • obj.conf ファイルにある send-cgi Service SAF の変数 diruser、および group を使う (iPlanet Web Server の『NSAPI プログラマーズガイド』を参照)

  • Virtual Server Manager の「Settings」タブにこの情報を入力する (iPlanet Web Server の『管理者ガイド』を参照)


仮想サーバの Chroot ディレクトリを指定する
セキュリティを更に向上させるには、前述したデータや仮想サーバのディレクトリ以外のディレクトリにあるデータには、 CGI スクリプトからアクセスできないようにする必要があります。

最初に、chroot 環境を設定します。 chroot 環境の正確な設定手順は、オペレーティングシステムによって異なります。 使用しているオペレーティングシステムのマニュアルを参照してください。 ftpd および chrootman ページを最初に参照することをお勧めします。

Solaris 2.6 から 8 のバージョンでは次の手順に従ってください。

  1. スーパーユーザとしてログインする

    su

  2. chroot ディレクトリに移動する。 通常は、前の節で述べた vs_dir ディレクトリ

    cd chroot

  3. chroot ディレクトリに tmp を作成する

    mkdir tmp

    chmod 1777 tmp

  4. chroot ディレクトリに dev を作成する

    mkdir dev

    chmod 755 dev

  5. /dev/tcp を一覧表示し、出力結果のメジャー番号とマイナー番号を確認する。 この例では、メジャー番号は 11、マイナー番号は 42

    ls -lL /dev/tcp

    crw-rw-rw- 1 root sys 11, 42 Apr 9 1998 /dev/tcp

  6. メジャー番号とマイナー番号を使用して tcp デバイスを作成する

    mknod dev/tcp c 11 42

    chmod 666 dev/tcp

  7. 次のデバイスごとに、手順 5 と 6 を繰り返す (それぞれのデバイスには、固有のメジャー番号とマイナー番号がある)

    /dev/udp
    /dev/ip
    /dev/kmem
    /dev/kstat
    /dev/ksyms
    /dev/mem
    /dev/null
    /dev/stderr
    /dev/stdin
    /dev/stdout
    /dev/ticotsord
    /dev/zero

  8. chroot ディレクトリの dev にあるデバイスにアクセス権を設定する

    chmod 666 dev/*

  9. chroot ディレクトリに libusr/lib を作成して設定する

    mkdir usr

    mkdir usr/lib

    ln -s /usr/lib

    ln /usr/lib/* usr/lib

    このコマンドで作成されるメッセージは無視してください。

    /usr/lib ディレクトリが別のファイルシステムにある場合は、最後のコマンドを次のように変更する

    cp -rf /usr/lib/* usr/lib

  10. chroot ディレクトリに binusr/bin を作成して設定する

    mkdir usr/bin

    ln -s /usr/bin

    ln /usr/bin/* usr/bin

    このコマンドで作成されるメッセージは無視してください。

    /usr/bin ディレクトリが別のファイルシステムにある場合は、最後のコマンドを次のように変更する

    cp -rf /usr/bin/* usr/bin

  11. chroot ディレクトリに etc を作成して設定する

    mkdir etc

    ln /etc/passwd /etc/group /etc/netconfig etc

  12. chroot 環境をテストする

    chroot chroot bin/ls -l

    出力結果の例を次に示します。

    total 14
    lrwxrwxrwx1 rootother8 Jan 13 03:32 bin -> /usr/bin
    drwxr-xr-x2 usergroup512 Jan 13 03:42 cgi-bin
    drwxr-xr-x2 rootother512 Jan 13 03:28 dev
    drwxr-xr-x2 usergroup512 Jan 13 03:26 docs
    drwxr-xr-x2 rootother512 Jan 13 03:33 etc
    lrwxrwxrwx1 rootother8 Jan 13 03:30 lib -> /usr/lib
    drwxr-xr-x4 rootother512 Jan 13 03:32 usr

次のいずれかの方法で仮想サーバの chroot ディレクトリを設定できます。

  • obj.conf ファイルにある send-cgi Service SAF のパラメータ chroot を使用する (iPlanet Web Server の『NSAPI プログラマーズガイド』を参照)

  • Virtual Server Managerの「Settings」タブにこの情報を入力する (iPlanet Web Server の『管理者ガイド』を参照)


CGI プログラムをサーバに追加

以下のいずれかを実行すると、CGI プログラムが iPlanet Web Server に追加されます。

  • CGI 用のディレクトリが設定されている場合、その場所にプログラムファイルを格納する

  • CGI ファイルタイプ認識機能が有効の場合は、サーバが CGI プログラムとして認識するファイル名を付けてドキュメントルート以下のディレクトリに格納する

UNIX では、プログラムファイルの実行権が必要です。


Windows NT CGI プログラムとシェル CGI プログラム

クラスマネージャインタフェースを使用して、 Windows NT に CGI プログラムとシェル CGI プログラムをインストールする方法については、iPlanet Web Server の『管理者ガイド』を参照してください。


Perl CGI プログラム

Perl 5.6.x では、-w フラグのある CGI を実行することはできません。 代わりに、次のコードをファイルに記述してください。

use warnings;


CGI 変数

CGI プログラムでは、サーバがセキュアモードで稼働している場合、標準の CGI 変数だけでなく 表 1-1 の iPlanet Web Server CGI 変数を使用しても、クライアント証明書情報にアクセスできます。 CLIENT_CERT 変数と REVOCATION 変数は、クライアント証明書ベースの認証が有効な場合にだけ使用できます。


表 1-1 CGI 変数 

変数

説明

SERVER_URL  

クライアントが要求したサーバの URL  

HTTP_xxx  

HTTP が要求する受信ヘッダー、xxx はヘッダー名  

HTTPS  

サーバがセキュアモードの場合は ON、それ以外は OFF  

HTTPS_KEYSIZE  

SSL ハンドシェークのキーサイズ (サーバがセキュアモードの場合に利用可)  

HTTPS_SECRETKEYSIZE  

SSL ハンドシェークの秘密鍵部分のキーサイズ (サーバがセキュアモードの場合に利用可)  

HTTPS_SESSIONID  

接続のセッション ID (サーバがセキュアモードの場合に利用可)  

CLIENT_CERT  

クライアントが発行する証明書 (バイナリ DER 形式)  

CLIENT_CERT_SUBJECT_DN  

クライアント証明書のサブジェクトの識別名  

CLIENT_CERT_SUBJECT_OU  

クライアント証明書のサブジェクトの組織単位  

CLIENT_CERT_SUBJECT_O  

クライアント証明書のサブジェクトの組織  

CLIENT_CERT_SUBJECT_C  

クライアント証明書のサブジェクトの国  

CLIENT_CERT_SUBJECT_L  

クライアント証明書のサブジェクトの場所  

CLIENT_CERT_SUBJECT_ST  

クライアント証明書のサブジェクトの州  

CLIENT_CERT_SUBJECT_E  

クライアント証明書のサブジェクトの電子メール  

CLIENT_CERT_SUBJECT_UID  

クライアント証明書のサブジェクトの CN の UID  

CLIENT_CERT_ISSUER_DN  

クライアント証明書発行者の識別名  

CLIENT_CERT_ISSUER_OU  

クライアント証明書発行者の組織単位  

CLIENT_CERT_ISSUER_O  

クライアント証明書発行者の組織  

CLIENT_CERT_ISSUER_C  

クライアント証明書発行者の国  

CLIENT_CERT_ISSUER_L  

クライアント証明書発行者の場所  

CLIENT_CERT_ISSUER_ST  

クライアント証明書発行者の州  

CLIENT_CERT_ISSUER_E  

クライアント証明書発行者の電子メール  

CLIENT_CERT_ISSUER_UID  

クライアント証明書発行者の CN の UID  

CLIENT_CERT_VALIDITY_START  

証明書の開始日  

CLIENT_CERT_VALIDITY_EXIRES  

証明書の有効期限  

CLIENT_CERT_EXTENSION_xxx  

証明書の拡張子、xxx は拡張子名  

REVOCATION_METHOD  

証明書の取り消し方法がある場合は、その方法名  

REVOCATION_STATUS  

証明書がある場合は、その取り消し状況  


参照先

CGI プログラムの記述方法ついて数多くの情報があります。 最初に次のサイトの「The Common Gateway Interface」を参照することをお勧めします。

http://hoohoo.ncsa.uiuc.edu/cgi/overview.html


Java サーブレットと JavaServer Pages (JSP)

iPlanet Web Server 6.0 は Java サーブレット仕様バージョン 2.2 (Web アプリケーションと WAR ファイルのサポートを含む) および JavaServer Pages (JSP) バージョン 1.1 をサポートしています。

Java サーブレットはサーバサイドの Java プログラムで、CGI プログラムとほぼ同じ方法で、クライアントの要求に応じて動的な内容を生成することができます。サーブレットには URL を呼び出してアクセスします。

サーブレットは米国 Sun Microsystems Inc. (以降、Sun とします) が作成した Servlet API を使用して作成します。iPlanet Web Server 6.0 には、Java サーブレットの開発と実行に必要なファイルがすべて含まれています。 servlet.jar ファイルがアクセスできる Java コンパイラであれば、どのコンパイラでもサーブレットをコンパイルできます。 servlet.jar ファイルはサーバのインストール先である次のディレクトリにあります。

/bin/https/jar

Servlet API の使い方は、次の Sun の Web サイトにある Java Servlet API のマニュアルを参照してください。

http://java.sun.com/products/servlet/index.html

JavaServer Page (JSP) は、HTML で作成されたページのように、 Web ブラウザで表示できるページです。 ただし HTML タグ以外にも Java コードを含む JSP タグや指令が使われているので、Web ページを作成する際にページに動的な内容を記述することができます。 このような機能を追加すると、プロパティ値を表示したり簡単な条件を使用したりできます。

JavaServer Pages の使い方については、次の Sun の Web サイトにある JavaServer Pages のマニュアルを参照してください。

http://java.sun.com/products/jsp/index.html


Java サーブレットと JavaServer Pages を有効にする

サーブレットを有効にするにはサーバマネージャで「Java」タブを選択し、次に「Enable/Disable Servlets/JSP」タブを選択します。 「Enable Java Globally」チェックボックスをオンにすると、サーバ全体でサーブレットが有効になります。 「Enable Java for Class」チェックボックスをオンにすると、単一の仮想サーバクラスのサーブレットが有効になります。 クラスのサーブレットを有効にするには、Java 全体を有効にしておく必要があります。 デフォルトでは Java 全体が有効であり、仮想サーバの各クラスも有効です。

JSP を有効にするには、enable=true である jsp-servlet 要素を web-apps.xml ファイルに指定して tools.jar を JVM クラスパスに追加する必要があります。 コンパイルされていない JSP を実行する場合は Java Development Kit (JDK) もインストールする必要があります。

iPlanet Web Server 6.0 のインストール時に、同梱されている Java Runtime
Environment (JRE) をインストールするか、または JDK へのパスを指定することができます。 JDK は iPlanet Web Server に同梱されていませんが、次の米国 Sun
Microsystems, Inc. の Web サイトから無料でダウンロードすることができます。

http://java.sun.com/products/jdk/1.2/

JRE を使うとサーブレットやコンパイル前の JSP をサーバで実行することはできますが、コンパイルされていない JSP を実行するには JDK が必要です。

iPlanet Web Server 6.0 では、JDK 1.2 の正式バージョンを使う必要があります。 詳細は、iPlanet Web Server の『サーブレットに関するプログラマーズガイド』を参照してください。

iPlanet Web Server のインストール中に JRE をインストールする場合も JDK へのパスを指定する場合も、Administration Server の「Global Settings」タブにある「Configure JRE/JDK Paths」ページでいつでも JRE と JDK を切り替えて使うことができます。

magnus.conf ファイルには次のような Init 指令が設定されています。 最初の指令で サーブレットのライブラリを読み込み、サーブレット関連の機能を iPlanet Web Server で利用できるようにします。 他の 2 つの指令により、サーブレットのエンジンが初期化されます。 以下に示す shlib 値は Windows NT 用のものです。


Init shlib="d:/server_root/bin/https/bin/NSServletPlugin.dll" funcs="NSServletEarlyInit,NSServletLateInit,NSServletNameTrans,N SServletService" shlib_flags="(global|now)" fn="load-modules"
Init EarlyInit="yes" fn="NSServletEarlyInit"
Init LateInit="yes" fn="NSServletLateInit"

UNIX では shlib 値は次のようになります。

shlib="server_root/bin/https/lib/libNSServletPlugin.so"

obj.conf ファイルにはサーブレットに関連する他の指令もあり、サーブレットへの要求を処理する追加オブジェクトを定義します。


サーブレットおよび JavaServer Pages をサーバに追加する

次のいずれかの方法で、サーブレットと JSP を使って、クライアントにアクセスすることができます。

  • Web アプリケーションにサーブレットをインクルードして導入する

  • デフォルトの仮想サーバでサーブレットを構成する。 iPlanet Web Server 4.x との下位互換用

詳細は、iPlanet Web Server の『サーブレットに関するプログラマーズガイド』を参照してください。


参照先

iPlanet Web Server 6.0 でサーブレットを使用する方法については、iPlanet Web Server の『サーブレットに関するプログラマーズガイド』を参照してください。

Servlet API を使ってサーブレットを作成する方法については、次の Sun の Web サイトにある Java Servlet API のマニュアルを参照してください。

http://java.sun.com/products/servlet/index.html

JSP の作成については、次の Sun の JavaServer Pages の Web サイトを参照してください。

http://java.sun.com/products/jsp/index.html


NSAPI

NSAPI (Netscape Server Application Programming Interface) とは、サーバに拡張機能を実装するための一連の C 関数のことです。 このような拡張機能は、サーバプラグインとして知られています。

NSAPI を使って、 iPlanet Web Server の機能を拡張するプラグインを作成することができます。 NSAPI プラグインは 1 つまたは複数の Server Application Functions (SAF) を定義します。 SAF を開発してカスタム認証やカスタムログ作成を実行し、iPlanet Web Server が要求を処理する方法を変更することができます。

ファイル obj.conf には (指令と呼ばれる) 命令があり、クライアントから受け取った要求を処理する方法をサーバに伝えます。 それぞれの命令は、サーバ初期化中または要求処理のある段階で実行されます。 それぞれの命令が Server Application Function (SAF) を呼び出します。

たとえば、要求メソッドが GET で、要求されたリソースのタイプが text/html の場合、次のような命令が呼び出されます。 この命令が、トレーラ引数 <H4><font color=green>Served by 6.0</font></H4> を持つ append-trailer 関数を呼び出します。 append-trailer 関数は要求されたリソースだけをクライアントに返し、与えられたトレーラを追加します。次の例では HTML ファイルを返します。


Service method=GET type="text/html" fn=append-trailer trailer="<H4><font color=green>Served by 6.0</font></H4>"

iPlanet Web Server 6.0 には、定義済みの SAF が同梱されています。 また NSAPI 関数のライブラリも提供されているため、ユーザが独自の SAF を開発してサーバが要求を処理する方法を変更することもできます。


NSAPI を有効にする

NSAPI そのものは有効にしません。 NSAPI を使用して Server Application Functions (SAF) を開発し、obj.conf ファイルで使用します。 obj.conf はサーバの操作には欠かせないファイルです。このファイルがないと、要求の処理方法に関する命令を検索できないためサーバは動作できません。

SAF を新しく定義する場合は、server_root/plugins/include にあるヘッダー関数 nsapi.h をインクルードしてすべての NSAPI 関数にアクセスできるようにします。


NSAPI プラグイン (SAF) をインストールする

カスタマイズされた SAF を含む新しい NSAPI プラグインをサーバに読み込むには、magnus.confInit 指令を追加して、新しい SAF を共有ライブラリファイルに定義します。 この指令は、次のような引数を取る load-modules 関数を呼び出す必要があります。

  • shlib - 読み込む共有ライブラリ

  • funcs - サーバで利用できる関数


参照先

次の項目についてはiPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。

  • obj.conf の指令、およびサーバが要求を処理する際の処理方法の決定方法

  • iPlanet Web Server 6.0 に同梱されている定義済みの SAF

  • カスタム SAF が作成できる NSAPI 関数

  • カスタム SAF の作成方法

  • load-modules を呼び出す magnus.confInit 指令を追加してカスタム SAF を iPlanet Web Server に読み込む方法


アクセス制御 API

アクセス制御 API は、iPlanet Web Server 上で、誰が何に対するアクセス権を持つかをプログラムで制御する C 言語の API です。

アクセス制御リスト (ACL) では、誰がどのようなアクセス権をサーバ上のどのリソースに対して持っているかを決定します。 それぞれの ACL にはアクセス制御エントリのリストがあります。 たとえば次のアクセス制御エントリでは、/private で始まる URI を持つリソースに対しては誰もアクセスできません。


acl "uri=/private/*";
deny (all)
(user = "anyone");

アクセス制御リストを作成するには、サーバマネージャ の「Preferences」タブにある「Restrict Access」ページを使います。 サーバが使用する ACL を含むファイルを編集することもできます。

デフォルトのアクセス制御リストは server_root/httpacl ディレクトリにあります。 デフォルトの ACL ファイルは generated.https-server_id.acl です。
genwork.https-server_id.acl と呼ばれるファイルもあります。これは、ユーザインタフェースを使って作業しているときに行なった変更を保存して適用するまでサーバで使用される作業用のコピーです。 ACL ファイルを編集する場合、genwork ファイルで作業した後に Server Manager で変更を読み込んで適用することがあります。

iPlanet Web Server 6.0 では、複数の ACL ファイルを設定して参照できます。 詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』にある server.xml ファイルについての説明を参照してください。

アクセス制御 API では、アクセス制御リスト (ACL) の操作、ACL ファイルの読み込みと書き込み、およびサーバにあるリソースの評価とアクセスのテストができます。

また、独自の認証属性も定義できます。 たとえば電子メールのアドレスに基づいてユーザを認証したり、ユーザが参照するリソースの URL に基づいて認証することができます。 たとえば次のようになります。

allow (read) referer="*www.acme.com*"

また、独自の認証方法やデータベースに基づいてクライアントを認証することもできます。


新しい認証サービスを登録

設定した認証属性をサーバが使用できるようにするには、NSAPI のプラグインである Loadable Authentication Service (LAS) を独自に定義する必要があります。 サーバへの読み込みは通常の方法で行い、magnus.conf に次の指令を追加します。

  • load-modules 関数を呼び出して共有ライブラリを読み込む Init 指令

  • 初期化関数を呼び出す Init 指令


参照先

ACL API の使い方は、『Access Control Programmer's Guide』を参照してください。 ACL ファイルを編集するための構文は、このマニュアルの「付録 A」を参照してください。

仮想サーバの ACL ファイルの設定については、iPlanet Web Server の『NSAPI プログラマーズガイド』にある server.xml ファイルについての説明を参照してください。

iPlanet Web Server 6.0 のアクセス制御 API への変更については、server_root/plugins/
include/nsacl/aclapi.h
ファイルのコメントを参照してください。


証明書マッピング API

証明書マッピング API は、証明書マッピングを管理するデータ構造と関数で構成されています。

ユーザがサーバにクライアント証明書を送信して iPlanet サーバへの認証を行う場合、サーバは証明書の情報を使ってユーザのエントリをユーザのディレクトリで検索します。

このプロセスの一部は、 certmap.conf ファイルを編集して設定することができます。 このファイルでは、次のような内容を指定します。

  • ユーザのエントリがあるディレクトリをサーバが検索する方法

  • ユーザの証明書とサーバが提示する証明書との間で、これらが一致していることを確認する手順を、サーバでさらに実行するかどうか

このファイルの詳細については、第 2 章「構成ファイル」を参照してください。

この「ディレクトリエントリの証明書」プロセスをプログラムで変更することもできます。iPlanet サーバにはこのプロセスを制御できる一連の API 関数 (ここでは証明書マッピング API 関数と呼びます) が設定されています。 独自の関数を作成して、ディレクトリで証明書サブジェクトのエントリを検索する方法をカスタマイズすることができます。

この API を使うには、Directory SDK のコピーが必要です。 この SDK のコピーは次の Web サイトからダウンロードできます。

http://developer.iplanet.com/


参照先

証明書マッピング API の使い方は、『Certificate-Mapping Programmer's Guide』を参照してください。



API の要約



次の表に、iPlanet Web Server 6.0 で使用できる API を示します。

表 1-2 iPlanet Web Server 6.0 で使用できる API

API/インタフェース/プロトコル

言語

マニュアル

動的な内容を生成するインタフェース

カスタム HTML タグのサーバによる構文解析  

C  

第 3 章「サーバによる HTML タグの構文解析」  

Java サーブレット  

Java  

iPlanet Web Server の『サーブレットに関するプログラマーズガイド』  

JavaServer Pages  

HTML と追加の JSP タグ  

iPlanet Web Server の『サーブレットに関するプログラマーズガイド』  

CGI (要求ごとに 1 プロセス)  

C、C++、Perl、シェル、
およびその他の言語
 

The Common Gateway Interface 

サーバのプラグインを作成する API

NSAPI (プロセス内共有オブジェクト/DLL)  

C、C++  

iPlanet Web Server の『NSAPI プログラマーズガイド』  

アクセス制御 API  

C、C++  

Access Control Programmer's Guide 

証明書マッピング API  

C、C++  

Certificate-Mapping Programmer's Guide 



旧バージョンからの変更内容



iPlanet Web Server の旧バージョンからの変更内容は、次の節で簡単に説明します。

構成ファイル固有の情報は、付録 A「iWS 4.x と 6.0 の設定の変更点」を参照してください。


iPlanet Web Server 3.x 以降の API の変更内容

  • 新しい API が追加され、カスタマイズされたタグのサーバによる構文解析が NSAPI プラグインとして定義された。 詳細は第 3 章「サーバによる HTML タグの構文解析」を参照

  • サーバサイド Java アプレット (HttpApplets) はサポートされていない。 代わりに Java サーブレットを使用

  • エージェント API はサポートされていない

  • NSAPI に新機能


iPlanet Web Server 4.0.x 以降の API の変更内容


iPlanet Web Server 4.1.x 以降の API の変更内容

  • サーブレットなどのプログラムで、サーバ全体ではなく仮想サーバを変更。 (iPlanet Web Server 4.1 にあるようなプログラムを追加する場合、仮想サーバを 1 つだけ設定できる)

  • Java Servlet 2.2 API で仕様説明されている Web アプリケーションに対応

  • NSAPI の新機能。 詳細は、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照

  • 一部の構成ファイルの変更。詳細は付録 A「iWS 4.x と 6.0 の設定の変更点」を参照

  • アクセス制御 API の変更。 詳細は、server_root/plugins/include/nsacl/
    aclapi.h
    ファイルのコメントを参照


前へ     目次     索引     DocHome     次へ     
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated September 06, 2001