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?
Vous pouvez également utiliser:
request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
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.
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;
}