web-dev-qa-db-de.com

Übergeben von Anmeldeinformationen an httpwebrequest für den Zugriff auf die SharePoint-Bibliothek

Ich versuche, Dateien aus einer SharePoint-Dokumentbibliothek mit HttpWebRequest zu lesen. Um dies zu tun, muss ich einige Anmeldeinformationen übergeben. Ich benutze die folgende Anfrage:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/msexcel";
request.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0";
request.Credentials = new NetworkCredential(UserName, PassWord);

Ist dies der richtige Weg, um Anmeldeinformationen zu übergeben?

28
Tortoise

Sie könnten auch verwenden:

request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
22
Mihai Brustur

Wenn Sie die Anforderung als aktueller Benutzer aus der Desktop-Anwendung ausführen müssen, verwenden Sie CredentialCache.DefaultCredentials (siehe auf MSDN ).

Ihr Code sieht gut aus, wenn Sie eine Anfrage vom Server aus oder unter einem anderen Benutzer ausführen müssen.

Bitte beachten Sie, dass Sie beim Speichern von Passwörtern vorsichtig sein sollten - verwenden Sie die SecureString -Version des Konstruktors.

6
Alexei Levenkov

Wenn Sie die Anmeldeinformationen im Handumdrehen festlegen müssen, schauen Sie sich diese Quelle an:

http://spc3.codeplex.com/SourceControl/changeset/view/57957#1015709

private ICredentials BuildCredentials(string siteurl, string username, string password, string authtype) {
    NetworkCredential cred;
    if (username.Contains(@"\")) {
        string domain = username.Substring(0, username.IndexOf(@"\"));
        username = username.Substring(username.IndexOf(@"\") + 1);
        cred = new System.Net.NetworkCredential(username, password, domain);
    } else {
        cred = new System.Net.NetworkCredential(username, password);
    }
    CredentialCache cache = new CredentialCache();
    if (authtype.Contains(":")) {
        authtype = authtype.Substring(authtype.IndexOf(":") + 1); //remove the TMG: prefix
    }
    cache.Add(new Uri(siteurl), authtype, cred);
    return cache;
}
1
djeeg