総合手引 | セクション 3 | English | オプション |
#include <taclib.h>
TACACS+ 要求を出す前に、ライブラリはコンタクトできるサーバから 認識されている必要があります。ライブラリを環境設定する簡単な方法は tac_config() を呼び出すことです。 tac_config() により、ライブラリは、 tacplus.conf(5) でその形式が定義されている環境設定ファイルを 読むことになります。環境設定ファイルのパス名は、引数 file として tac_config() に渡されます。この引数には ヌル を渡すこともでき、その場合は標準環境設定ファイル /etc/tacplus.conf が使われます。 tac_config() は 正常終了のとき、0 を返し、エラーの場合は -1 を返します。
ライブラリは、 tac_add_server() を呼び出すことで、決まった手順に従って構成できます。 パラメータ host はサーバホストを、完全修飾形のドメイン名 (FQDN)、または ピリオドで 4 つの部分に分割表示したテキスト形式の IP アドレスによって 定義します。パラメータ port は、サーバと接続する TCP ポートを定義します。 port が 0 と定義されていると、ライブラリは標準 TACACS+ ポートである ポート 49 を使用します。サーバホストに対する共有シークレットは、 secret パラメータに渡されます。それは ヌル で終了するなんらかの文字列でもかまいません。 サーバからの受信タイムアウトは、 timeout パラメータに、秒の単位で渡されます。 flags パラメータは、フラグの ビットマスクで、サーバの種々の性質を指定するためのものです。内容は 次のとおりです。
TAC_SRVR_SINGLE_CONNECT | |
で、ライブラリはサーバと通信するときに、単一接続モードで ネゴシエートしようとします。単一接続モードでは元の TCP 接続が 多重 TACACS+ セッションに対し解放されています。 旧式のサーバはこのモードはサポートしておらず、サーバによっては、 クライアントがネゴシエートしようとすると混乱してしまうものもあります。 | |
tac_add_server() は正常終了時に 0 を返し、エラーのときは -1 を返します。
tac_add_server() は、複数回呼び出すことができ、 tac_config() と一緒に 使用します。最大 10 のサーバまで指定できます。複数サーバの指定があると、 ラウンドロビン方式により稼働中のアクセス可能なサーバを見つけようとします。 ライブラリは、そうしたサーバを見つけると、 サーバが稼動している限りそれを使い続けます。
tac_create_authen() で要求を生成した後、種々の任意指定パラメータを、 tac_set_data(), tac_set_port(), tac_set_priv(), tac_set_rem_addr(), tac_set_user() を呼び出して付加します。ライブラリは、これらの関数に提供された自分自身の 文字列の複製を作るので、呼び出し側で文字列を保存しておく必要はありません。 デフォルトで各パラメータは空ですが、権限レベルだけは ‘USER’ 権限にデフォルト指定されています。
TAC_AUTHEN_STATUS_PASS | |
TAC_AUTHEN_STATUS_FAIL | |
TAC_AUTHEN_STATUS_GETDATA | |
TAC_AUTHEN_STATUS_GETUSER | |
TAC_AUTHEN_STATUS_GETPASS | |
TAC_AUTHEN_STATUS_RESTART | |
TAC_AUTHEN_STATUS_ERROR | |
TAC_AUTHEN_STATUS_FOLLOW | |
唯一のフラグは no-echo フラグで、 TAC_AUTHEN_NOECHO() マクロで検出できます。
tac_get_data() の場合、引数 len は、ライブラリが終端の ナル 文字を含まない実サイズの受信データの保管場所を指しています。 この引数には、呼び出し側が長さを問題にしない場合は、 ヌル を指定してもかまいません。
[注意] tac_create_authen() は、連続パケットを生成するときには 呼び出さずに 、初期の認証要求のときにだけ使用する必要があります。
連続パケットを受信すると、サーバは TAC_AUTHEN_STATUS_GETDATA, TAC_AUTHEN_STATUS_GETUSER, TAC_AUTHEN_STATUS_GETPASS を返して、更に情報を要求します。 アプリケーションは、サーバから別の状態コードが受信されるまで、 引き続き連続パケットを送信しなければなりません。
tac_add_server() | |
tac_config() | |
tac_create_authen() | |
tac_send_authen() | |
tac_set_data() | |
tac_set_msg() | |
tac_set_port() | |
tac_set_priv() | |
tac_set_rem_addr() | |
tac_set_user() | |
以下の関数は、正常終了時にヌルでないポインタを返します。 十分な仮想メモリが割り当てられない場合、 ヌル を返し、エラーメッセージを記録します。メッセージは tac_strerror() で取り出せます。
tac_get_data() | |
tac_get_msg() | |
以下の関数は、正常終了時にヌルでないポインタを返します。 十分な仮想メモリが割り当てられない場合、 ヌル を返し、エラーメッセージを記録しません。
tac_open() | |
draft-grant-tacacs-02.txt (Internet Draft), The TACACS+ Protocol, Version 1.78,
, ,LIBTACPLUS (3) | September 2, 1998 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.