4

C++ で記述された Windows ベースのアプリケーション (基本的には HTTP/1.1 プロキシ サーバー) は、さまざまなユーザーからの要求をリッスンします。現在、407 Basic Challenge を送信し、ヘッダーからの応答を処理できます。クライアント ブラウザが認証のために NTLM ベースの応答を行うように、チャレンジ ヘッダーを変更する必要があることはわかっています。しかし、私の質問は、407 認証チャレンジ用の正しいトークン、ノンスなどをどのように生成し、受信した応答が正しいかどうかをどのように検証するのですか? 最後に、可能であればクライアントのユーザー名とその他の LDAP / ADS プロパティを記録したいと思います。

親切にしてください。同様のことを議論するスレッドが既にある場合は、正しい投稿にリダイレクトしてください。WWW に関するほとんどの調査では、HTTP サーバーで実行する必要があるコーディングについては、クライアント側のプログラミングにしかたどり着きません。

ここにいる素晴らしいハックの皆さん、事前に大きな感謝を。

4

5 に答える 5

8

手短に言えば、このUsing SSPI with a Windows Sockets Server のサンプルは最適な出発点であり、必要な基本的な SSPI 呼び出しを示すはずです。これはプレーンな TCP サーバー用に書かれていますが、チャレンジ/レスポンス データは HTTP 経由で送信されるため、それほど複雑ではありません。

[MS-N2HT]: ネゴシエートおよび Nego2 HTTP 認証プロトコル

Apache コードの mod_auth_sspi を確認することをお勧めします。

個人的には、IIS に低レベルのデバッガーを接続して、彼がどのように SSPI 関数を呼び出しているかを確認することも試してみますが、それはあなたの好みではないかもしれません。

SSPI をここまで使いこなせば、ユーザー名を取得するのは簡単です (ただし、サポートが必要な場合はお尋ねください)。ユーザーの LDAP/AD プロパティは、これらの API で照会できます。

長い答えには、軽い読み物がほとんど含まれていません。

ウィキペディアの統合 Windows 認証

Microsoft Windows での SPNEGO ベースの Kerberos および NTLM HTTP 認証

Negotiate Protocol による HTTP ベースのクロスプラットフォーム認証 (パート 1/3)

パート 3 には、いくつかの興味深いコード サンプルもあります。

お役に立てれば!

于 2009-07-30T01:38:09.443 に答える
2

httpauth に役立つコードがあります。smbval コードを使用して、NTLM メッセージ 1 と 3 を解析します。参照: http://memberwebs.com/stef/software/httpauth/

于 2009-08-08T13:31:33.360 に答える
1

mod_auth_sspiApache モジュールを見るとインスピレーションが得られるかもしれません

于 2009-07-23T13:11:21.577 に答える
0

これは便利なJava実装です

http://www.luigidragon.com/networking/ntlm.html

そして、さらに有用なのは、文書化されていない ntlm スキームを文書化する試みです。

http://www.innovation.ch/personal/ronald/ntlm.html

于 2009-07-30T03:12:24.197 に答える