Oracle Solaris セキュリティーサービス開発ガイド

GSS-API の実装に固有な機能

GSS-API の実装によっては、いくつかの動作が若干異なる場合もあります。ほとんどの場合、実装による違いはプログラムに最小限の影響しか与えません。どのような場合でも、実装に固有な動作 (Sun の実装も含む) に依存しなければ、移植性を最大限にすることができます。

Sun 固有の関数

Sun の実装には、カスタマイズされた GSS-API 関数はありません。

人が読める名前についての構文

GSS-API の実装によっては、名前の出力可能な形式についての構文が異なる場合があります。移植性を最大限にする場合は、アプリケーションで、人が読める (つまり出力可能な) 形式を使用する名前を比較するべきではありません。そのかわり、gss_compare_name() を使用して内部形式名がほかの名前と一致するかどうかを確認してください。

Sun の 実装の gss_display_name() では名前を次のように表示します。input_name 引数がユーザー主体を指す場合、gss_display_name()user_principal@realmoutput_name_buffer として、gss_OID 値を output_name_type として戻します。Kerberos v5 が実際の機構である場合、gss_OID1.2.840.11354.1.2.2 になります。

gss_import_name()GSS_C_NO_OID 名前型で作成した名前を gss_display_name() が受け取った場合、gss_display_name()GSS_C_NO_OIDoutput_name_type パラメータで戻します。

匿名の形式

gss_display_name() 関数は、匿名の GSS-API 主体を示すとき、文字列 <anonymous> を出力します。この名前に関連する名前型 OID は GSS_C_NT_ANONYMOUS です。Sun の実装で有効な印刷可能な名前の中では、これ以外にかぎかっこ (<>) で囲まれているものはありません。

選択されたデータ型の実装

gss_cred_tgss_ctx_id_tgss_name_t の各データ型はポインタとして実装されています (一部の実装では算術型として指定される場合もある) 。  

コンテキストの削除と格納されたデータの解放

コンテキストの確立に失敗すると、Sun の実装では部分的に構築されたコンテキストを自動的に削除しません。したがって、アプリケーションでこの事態を処理する、つまり、gss_delete_sec_context() でコンテキストを削除する必要があります。

Sun の実装では、格納されたデータ (内部名など) を、メモリー管理を通じて自動的に解放します。しかし、データ要素が必要でなくなったときには、アプリケーションで適切な関数 (gss_release_name() など) を呼び出す必要があります。

チャネルバインディング情報の保護

チャネルバインディングをサポートしているかどうかは、機構によって異なります。Diffie-Hellman 機構と Kerberos v5 機構はどちらもチャネルバインディングをサポートしています。

開発者は、チャネルバインディングデータには機密保護が施されていないものとしてください。Kerberos v5 機構には機密保護が用意されていますが、 Diffie-Hellman 機構ではチャネルバインディングデータの機密性は保持されません。

コンテキストのエクスポートとプロセス間トークン

Sun の実装では、同じコンテキストに対する複数のインポートの試みを検出および拒否します。

サポートされる資格の型

GSS-API の Sun の実装では、gss_acquire_cred() による、GSS_C_INITIATEGSS_C_ACCEPT、および GSS_C_BOTH の各資格の獲得をサポートしています。

資格の有効期間

GSS-API の Sun の実装では、資格の有効期間の設定をサポートします。したがって、プログラマは gss_acquire_cred()gss_add_cred() などの関数で、資格の有効期間に関連するパラメータを使用できます。

コンテキストの有効期間

GSS-API の Sun の実装では、コンテキストの有効期間の設定をサポートします。したがって、プログラマは gss_init_sec_context()gss_inquire_context() などの関数で、コンテキストの有効期間に関連するパラメータを使用できます。

ラップサイズの制限と QOP 値

GSS-API の Sun 実装では、基礎となる機構とは異なり、gss_wrap() で処理するメッセージの最大サイズ制限を課しません。アプリケーションは gss_wrap_size_limit() でメッセージの最大サイズを決定できます。

GSS-API の Sun の実装では、gss_wrap_size_limit() を呼び出すとき、無効な QOP 値を検出します。

minor_status パラメータの使用

GSS-API の Sun の実装では、関数が minor_status パラメータで戻すのは、機構に固有な情報のみです。他の実装では、戻されたマイナー状態コードの一部として実装に固有な戻り値が含まれることもあります。