NTLMプロトコルを使用してユーザーを認証するWebアプリケーションを作成しています。
クライアントからパスワードのNTハッシュとLMハッシュを正常に取得しました。パスワードが正しいことを確認するためにActiveDirectoryに対してそれらを検証する方法。
私はC#を使用していますが、ネイティブライブラリを呼び出すことも可能だと思います。
編集:反対票の理由がわかりません。NTLM(v2)プロトコルは古くなっているため、その処理方法に関する相対的な情報を見つけるのは非常に困難です。特にC#のような現代語の中から。
しかし、私は2つの可能なアプローチを見つけました。
- WindowsのネイティブSSPI呼び出し(Microsoftでは推奨されていません)を使用しますが、適切にラップすることで可能になります。幸いなことに、例があります。http: //pinvoke.net/default.aspx/secur32/InitializeSecurityContext.htmlこのアプローチは機能しているようです。アカウントを確認できました。しかし、まだいくつかの質問が残っています。クライアントのHTTPリクエスト間でサーバーのセキュリティコンテキストに関する情報を転送する、安全でないコードを呼び出す、他のシステムでそのような操作を実行できないなど。
- を介して行われたアンラップ呼び出しを試行します
System.Net.Security.NegotiateStream
。アイデアは素晴らしいですが、これを達成する方法の手がかりはありません。