Подтвердить что ты не робот

Как передать учетные данные httpwebrequest для доступа к библиотеке SharePoint

Я пытаюсь читать файлы из библиотеки документов SharePoint с помощью HttpWebRequest. Для этого мне нужно передать некоторые учетные данные. Я использую следующий запрос:

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);

Это правильный способ передачи учетных данных?

4b9b3361

Ответ 1

Вы также можете использовать:

request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

Ответ 2

Если вам нужно запустить запрос как текущий пользователь из настольного приложения, используйте CredentialCache.DefaultCredentials (см. MSDN).

Ваш код выглядит хорошо, если вам нужно выполнить запрос из кода на стороне сервера или под другим пользователем.

Обратите внимание, что вы должны быть осторожны при хранении паролей - рассмотрите возможность использования версии конструктора SecureString.

Ответ 3

Если вам нужно установить учетные данные "на лету", посмотрите на этот источник:

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;
}