0

ネゴシエートを使用してプロキシで認証する必要があるアプリケーションを開発しています。ユーザーが Kerberos クライアントをインストールしていない可能性があります。プラットフォームへの依存を避けるために、MIT Kerberos Library を使用してこれを達成しようとしています。krb5_get_init_creds_password を使用して TKT を正常に取得し、krb5_verify_init_creds を検証しました。ここで、この TKT を使用して HTTP ヘッダーで送信される SPNEGO トークンを作成したいと考えています。SPNEGO トークンを作成するための API またはメソッドを教えてもらえますか?

4

1 に答える 1

1

この目的で gss_init_sec_context を使用できます。

いくつかの背景:-

SPNEGO は、HTTP ベースの通信用の kerberos 上の抽象化です (ただし、暗号化にはセキュリティ コンテキストを使用しません)。

この目的のために、次のことを行います:-

  1. krb5_get_init_creds_password を取得し、krb5 mech 資格情報を取得したので、krb5_cc_new_unique を使用してメモリ内資格情報キャッシュを作成し、初期化します。

  2. krb5_cc_store_cred を使用してそのキャッシュに保存します

  3. gss_krb5_import_cred を使用して GSSAPI トークンを取得する

これで、必要な事前認証情報がすべて揃いました。gss_init_sec_context を使用して入力トークンを作成するだけです。

ここが良い点です。最新の MIT Kerberos ライブラリは SPNEGO をネイティブにサポートしています。作成する必要がある gss_OID という OID 構造があります。SPNEGO の場合:-

 static gss_OID_desc _gss_mech_spnego = { 6, (void *) "\x2b\x06\x01\x05\x05\x02" }; 

これを引数として gss_init_sec_context に渡します。

古い MIT Kerberos ライブラリを使用している場合は、この目的のために fbopenssl を使用することをお勧めします。curl のソース コードをチェックアウトして、その方法を確認できます。

于 2013-11-02T18:25:12.337 に答える