Sun Enterprise Authentication Mechanism ガイド

プリンシパル名

セキュリティコンテキストを確立および保守するには、2 種類のプリンシパル名が必要です。

サーバープリンシパル名の設定

サーバーには、起動時、そのプリンシパル名を設定しておく必要があります (サーバーは複数のプリンシパルとして動作する可能性があります)。rpc_gss_set_svc_name() を使用すればプリンシパル名が設定されます。


例 8-3 rpc_gss_set_svc_name()

char *principal, *mechanism;
u_int req_time;

principal = "nfs@eng.acme.com";
mechanism = "kerberos_v5";
req_time = 10000;		/* 資格が有効である時間 */

rpc_gss_set_svc_name(principal, mechanism, req_time, SERV_PROG, SERV_VERS);

Kerberos は req_time パラメータを無視します。他の認証システムはこのパラメータを使用できます。

詳細は、rpc_gss_set_svc_name(3N) のマニュアルページを参照してください。

クライアントプリンシパル名の生成

サーバーはクライアントプリンシパル名を操作できる必要があります。たとえば、クライアントプリンシパル名をアクセス制御リストと比較するときや、そのクライアントの資格が存在するかどうか UNIX 資格を検索するときなどです。このようなプリンシパル名は rpc_gss_principal_t 構造体ポインタの形式で保存されます (rpc_gss_principal_t についての詳細は、rpcsec_gss(3N) のマニュアルページを参照)。サーバーが受信したプリンシパル名を既知のエンティティの名前と比較したい場合、受信した形式でプリンシパル名を生成できる必要があります。

rpc_gss_get_principal_name() の呼び出しでは、ネットワーク上でユーザーを一意に識別するためのいくつかのパラメータを入力する必要があり、プリンシパル名を rpc_gss_principal_t 構造体ポインタとして生成します。


例 8-4 rpc_gss_get_principal_name()

rpc_gss_principal_t *principal;

rpc_gss_get_principal_name(principal, mechanism, name, node, domain);
. . .

次に、rpc_gss_get_principal_name() の引数を示します。

各セキュリティ機構には異なる識別パラメータが必要です。たとえば、Kerberos V5 には、ユーザー名と (オプションとして) 修飾されたノードとドメイン名 (Kerberos の用語では、ホストとレルムの名前) が必要です。

詳細は、rpc_gss_get_principal_name(3N) のマニュアルページを参照してください。

プリンシパル名の解放

プリンシパル名を解放するには、free() ライブラリを呼び出します。