web-dev-qa-db-fra.com

Comment transmettre des informations d'identification à httpwebrequest pour accéder à la bibliothèque SharePoint

J'essaie de lire des fichiers à partir d'une bibliothèque de documents SharePoint en utilisant HttpWebRequest. Pour ce faire, je dois transmettre certaines informations d'identification. J'utilise la demande ci-dessous:

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

Est-ce la bonne façon de transmettre des informations d'identification?

28
Tortoise

Vous pouvez également utiliser:

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

Si vous devez exécuter la demande en tant qu'utilisateur actuel à partir de l'application de bureau, utilisez CredentialCache.DefaultCredentials (voir sur MSDN ).

Votre code semble correct si vous devez exécuter une demande à partir du code côté serveur ou sous un autre utilisateur.

Veuillez noter que vous devez être prudent lors du stockage des mots de passe - pensez à utiliser la version SecureString du constructeur.

6
Alexei Levenkov

Si vous devez définir les informations d'identification à la volée, consultez cette source:

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