1

NTLM資格情報を使用して呼び出されるASPXページ(サーバーA上)があります。そのページの仕事の一部は、(サーバー B で) HTML ページを呼び出し、それをクライアントにプロキシすることです。(ファイアウォールは A へのアクセスを許可しますが、B へのアクセスは許可しません。通常、ユーザーは両方のサーバーへのアクセスを許可されます。) サーバー B も匿名アクセスに対して開かれていないため、資格情報を提供する必要があります。

一部の資格情報を (添付のコードに従って) ハードコードすると機能しますが、.aspx ページで受け取った資格情報をエコーするのが理想的です。これらの NetworkCredentials を取得して渡す方法はありますか?

protected void Page_Load(object sender, EventArgs e) { 
    Response.Clear(); 
    WebClient proxyFile = new WebClient(); 
    CredentialCache cc = new CredentialCache(); 
    cc.Add(new Uri("http://serverB/"), "NTLM", 
        new NetworkCredential("userName", "password", "domain")); 
    proxyFile.Credentials = cc; 

    Stream proxyStream = proxyFile.OpenRead("http://serverB/Content/webPage.html"); 
    int i; 
    do { 
        i = proxyStream.ReadByte(); 
        if (i != -1) { 
            Response.OutputStream.WriteByte((byte)i); 
        } 
    } while (i != -1); 
    Response.End(); 
} 
4

3 に答える 3

1

発信者のログイン名は確実に取得できますが、パスワードは取得できません。NTLMはチャレンジ/レスポンスメカニズムを使用するため、パスワードが送信されることはありません。チャレンジを形成して応答を確認するには、サーバーがパスワードに相当するもの(ハッシュ)にアクセスできる必要がありますが、それを取得できたとしても、そのパスワードに相当するものは、サーバーBによって受け入れられます。

別の回答で説明されているように、なりすましを設定できる場合でも、それでも必ずしも目的の結果が得られるとは限りません。デフォルトでは、偽装サーバープロセスはそのIDを別のサーバーに送信できません。その2番目のホップは委任と呼ばれ、関係するサーバー(および/またはActive Directory)で明示的に構成する必要があります。

委任とは別に、サーバーAがアクセスしてサーバーBに提示できる資格情報のデータベースを維持することが唯一の選択肢だと思います。安全な方法でそれを構築することは、微妙で時間のかかるプロセスです。一方、委任がデフォルトで無効になっているのには理由があります。サーバーにログインするときに、自分のIDを使用して他のサーバーにアクセスできるようにしますか?委任は最も簡単なオプションですが、ユーザーのIDで無責任なことを行うために、サーバーAが危険にさらされないようにする必要があります。

于 2008-10-01T19:11:50.730 に答える
0

あなたのシナリオでは、発信者の身元を偽装できますか?そうすれば、クレデンシャルを渡す必要さえありません。例:

<authentication mode="Windows" />
<identity impersonate="true" />

サーバーAのweb.configにあります。ただし、サーバーAには必要ない場合があるため、これはもちろん状況によって異なります。ただし、可能であれば、カスタムコードなしで問題を解決できます。

なりすましを設定するためのリンクは次のとおりです:http://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingorigcaller

于 2008-10-01T18:32:59.030 に答える
0

Page.User は、ページが実行されているユーザーのセキュリティ プリンシパルを取得します。

そこから、あなたはそれを理解できるはずです。

于 2008-10-01T18:26:06.410 に答える