2

現在、私は自分の問題を解決しようとしています。つまり、特定のページでのみパスワードを要求するという、私が考える方法でイントラネット サイトに NTLM 認証を実装しています。メインページにアクセスするだけでなく、サイトを 2 つの部分に分割する必要があります。

問題 Nancy フレームワークを使用していますが、NTLM をネイティブに実装していません。しかし、これは本物のカウボーイ プログラマーを止めるものではありません。そのため、この目標を達成するために、カスタムのリクエスト/レスポンス シーケンスを開発しようとしています。

今のところ、このQ&Aを発見しましたが、解決策はIISに接着されています...

NTLM に関する複雑な情報が多数掲載されているサイトを見つけましたが、このプロセスを簡素化する C# クラスはあるのでしょうか?

つまり、さまざまなタイプの応答を作成するのに役立ちます。

現在、私のコードは次のようになっています。

Get["/Profile/"] = parameters =>
{
    var request = this.Request;

    if (this.Request.Headers.Keys.Any(x => x == "Authorization"))
    {
        var items = Response.Context.Items;

        var expert = new Expert(WindowsIdentity.GetCurrent());
        var model = expert.Ensure();

        return View["Profile.liquid", model];
    }
    else
    {
        var response = new Response();
        response.StatusCode = HttpStatusCode.Unauthorized;
        response.Headers.Add("WWW-Authenticate", "NTLM");
        return response;
    }
};

ただし、NTLM 認証の最初の段階のみを実装します。ヘルパーをすぐに使用できるようにすることで、他のステップを実装するための多くの手動コードを回避することは可能ですか?

4

3 に答える 3

1

いくつかのソースをマージして、プロトコル全体の実用的な実装を開発しました:「NTLM」->「クライアントデータを含むNTLM」->「NTLMチャレンジ」->「クライアントからのNTLMチャレンジ」そしてすべてがうまく機能し、外部ライブラリ。少しだけ問題があるのは、すべて C++ です (C# でバッファーをいじるのは嫌です :P )。これは 140kb の C++ ソースです。すべてがここにあります: https://kendar.org/?p=/dotnet/kendarntlmlib

--ここから悪いニュースを始めましょう...--

IIS で理解している限り、この種のものは ISAPI フィルターとしてのみ機能します。NTLM は接続ベースのプロトコルであるため、MVC コントローラー、aspx ページ、または ashx ハンドラーで、同じ http 要求で request-response-request を実行できませんでした。また、IIS は、http の標準的なコネクションレス アプローチを「オーバーライド」するために使用できるソケット ハンドルを公開していませんが、ISAPI の部分では ... (結局 HTTP ですが、私の翼を切ってしまいます :P )

Bonobo github クローンで使用されているのを見た基本認証属性のように使用したかったのですが、うまくいきませんでした..

--ここで悪いニュースを終了します--

さらに、ネイティブ DLL を C#-ANyCPU でコンパイルされたプロジェクトにロードする際に問題がありましたが、これは簡単です :P ( http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c- assembly-in-asp-net.aspx参照用)

于 2013-03-24T21:52:43.137 に答える
1

あなたが本当にこれらすべてを自分で書きたいのなら、あなたはちょっとした巨大な仕事に直面していると思います. この URL が役立つ場合があります。一般的な NTLM 認証に関する情報が含まれていますが、NTLM を使用した HTTP 認証の会話の例も示しています。

http://davenport.sourceforge.net/ntlm.html#ntlmHttpAuthentication

もう 1 つの探索可能な方法は、Mono コード ベースに利用できるものがあるかどうかを確認することです。これは、組み込みの JSON シリアライザーで行ったことです。

別のオプションは、フォームまたは基本認証を使用することですが、AD/LDAP に対してユーザー名/パスワードを認証します。

于 2012-12-10T18:02:18.787 に答える
0

一部の Nancy ビューでユーザー制限を指定してhttps://github.com/toolchain/Nancy.Authentication.Ntlmを使用する例が必要です。ありがとうございました!

于 2013-12-03T10:38:17.677 に答える