[SSP技術資料]

簡易ディレクトリサービス

注)SSP本体側では未実装です.近日中に実装します


簡易ディレクトリサービスは,HTTPを使用した単純なディレクトリサービスです.
ここでいうディレクトリサービスとは,プロバイダなどのIP接続やDHCPなど固定ではないIPアドレスが割り当てられる環境にいる人を探すためのサービスです.
簡易ディレクトリサービスでは,特殊なサーバ等の追加設備一切なしで,HTTPによる通信のみで,このサービスを実現するためのものです.
SSPでは,メッセンジャ機能等に利用する予定です.


簡易ディレクトリサービスプロトコル

簡易ディレクトリサービスは,HTTPを利用します.基本的に,クライアント(SSP等)からは,HTTPのPOSTメソッドを利用してサービスに接続を行います.

簡易ディレクトリサービスは,次の2つを実装します.

(1)ユーザログオン,ログオフ
(2)ユーザの検索

それぞれのプロトコルについて説明します.


■(1)ユーザのログオン

自分がどこにいるのかを他のユーザに教えるために,簡易ディレクトリサービスにログオンします.
ここでは次のような情報を,クライアントからサーバに送ります.

・ユーザID
ユーザIDはユーザをユニークに識別するための文字列です.通常はメールアドレスを使用します.

・IPアドレス
クライアントのIPアドレスです.***.***.***.***のような形式です.

・ポート番号
クライアントでメッセージを受け取ることのできるSSTPサーバのポート番号です.

・ユーザ名
ユーザ名です.ユーザIDと違い,こちらは検索には使用しません.表示用と考えてください.

クライアントからサーバへは,POSTメソッドでこれらのデータが渡されます.次のような書式です.

Command=logon&ID=ユーザID&Address=IPアドレス&Port=ポート番号&Name=ユーザ名

サーバ側では,このメッセージを受け取ったら,ディレクトリサービスにユーザをログオンさせます.なお,認証などは,全てサーバ任せです.クライアント側は責任を持ちません.
サーバ側では,メッセージを処理したら,クライアントにテキスト形式で応答を返します.HTMLではなく,HTTPでヘッダの後の空行の後すぐにテキストを続けてください.

・ログオン成功の場合
200 OK\r\n
Duration: 30\r\n
\r\n

Dulationはログオンの有効な時間(分単位)です.無指定の場合は60分になります.簡易ディレクトリサービスでは,正確なログオフメッセージを取ることができないため,サーバ側では,このように一定時間が経過するとユーザ情報を無効になるように処理してください.
また,クライアント側では,ログオンしてからDurationで指定された時間が経過したら,再びサーバにログオンのメッセージをPOSTします.このとき,Command=updateとしてサーバに通知されます.

なお,サーバ側では常に新しく入ってきたユーザ情報を有効にしてください.

また,クライアント側が終了するときなどには,ログオフ通知が渡されます.Command=logoffとして,ログオンと同じ形式で渡されます.しかしながら,このメッセージが必ず来る問い保証はありません(ネットワークの切断やクライアントの異常終了など)のでDulationの処理でアカウントを無効にする処理を優先させてください.また,ログオフは必ずしも処理する必要はありません.

・ログオン失敗の場合
400 Bad Request\r\n
\r\n

などのように,エラーコードを返してください.


■(2)ユーザの検索

クライアントが特定のユーザを,簡易ディレクトリサービスに登録されたユーザ情報から検索するときに使用します.

クライアント側からは,検索するユーザIDがPOSTされてきますので,サーバ側は登録されているユーザからユーザIDをキーにして検索して,見つかった場合には,そのユーザ情報をクライアントに返します.

クライアントからサーバへは,POSTメソッドでデータが渡されます.次のような書式です.

Command=query&ID=ユーザID サーバ側では,メッセージを処理したら,クライアントにテキスト形式で応答を返します.HTMLではなく,HTTPでヘッダの後の空行の後すぐにテキストを続けてください.

・指定されたユーザが見つかった場合
200 OK\r\n
Address: ***.***.***.***\r\n
Port: 9821\r\n
Name: 1ミリメートル\r\n
\r\n

・見つからなかった場合
404 Not Found\r\n
\r\n

・その他エラー
500 Internal Server Error\r\n
\r\n

等のようにエラーコードを返してください.

※logon,logoff,update,queryは全て同じURLにPOSTされます.サーバ側はCommand=の部分を適切に解釈して処理する必要があります.


簡易ディレクトリサービス定義ファイル(仮)

SSPなどのクライアントソフトに,簡易ディレクトリサービスの設定を簡単にインストールするための設定ファイルです.

INSTALL/1.0準拠で,install.txtに次のようなエントリを記述し,LHAまたはZIPで書庫にして配布します.

type,directory service setting
name,ふたばようちえん
descript,今日も元気におはようございます
url,http://www.futaba-yochien.ac.jp/logon.cgi

name,descriptは,クライアントソフトでメニューなどで使用されます.

urlにサーバのアドレスを指定してください.


ディレクトリサービス用サーバサンプルコード

SSPデフォルトのディレクトリサービスに使用されているものです.
C++を使用しているので,gcc等のコンパイラが利用でき,かつ実行ファイルをCGIに利用できる環境でのみ使用できます.

ダウンロード


戻る