1

次のシナリオを実装する必要があります。ASP .NET webapp 1. ユーザーがログインします 2. ログインしたユーザーの資格情報を使用して、Sharepoint サイトからいくつかのファイルをダウンロードする必要があります。

環境: - 現在、web.config は偽装オン、および Windows 認証に設定されています。基本認証も使用する必要があります。System.Net.WebClient を使用して、Sharepoint サイトの Web サービスを使用して Sharepoint ファイルをダウンロードします。この WebClient には Credential オブジェクトが必要です。そのため、NetworkCredential オブジェクトが必要です。

PS: CredentialCache.DefaultCredentials と CredentialCache.DefaultNetworkCredentials は空のユーザー名と pw の資格情報を返すため、Sharpeint サイトへのアクセスには使用できません。System.Security.Principal.WindowsIdentity.GetCurrent() または System.Web.HttpContext.Current.User.Identity を取得するのにも適していません。この方法ではユーザー名しか取得できず、NetworkCredential をインスタンス化するには uname が必要なためです。そしてpw。

4

2 に答える 2

4

参考までに、問題を解決できたと思います。私は偽装コンテキストを使用しており、 を使用し、を trueCredentialCache.DefaultNetworkCredentialsに設定していWebClientます。UseDefaultCredentialsそう:

WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
using (identity.Impersonate())
{
    webClient.Credentials = CredentialCache.DefaultNetworkCredentials;
    webClient.UseDefaultCredentials = true;
}

これは私にとってはうまくいきました。

于 2013-10-15T12:28:23.493 に答える
1

シナリオで可能であれば、フォーム認証を使用して、.ASPXAUTH Cookie をそのファイルへの要求と共に送信することができます。この回答を参照してください。

WebClient リクエストを認証するにはどうすればよいですか?

編集Windows認証が正しく機能するために、web.configにこれがあることを確認してください:

<system.web>

    <authentication mode="Windows" />

     <authorization>
         <deny users="?"/>
      </authorization>

</system.web>

于 2013-10-06T19:19:50.663 に答える