2009-11-06 6 views
1

Vous avez ce problème - je ne sais pas si c'est possible.Portail Sharepoint vers ActiveX vers WebClient retour vers Sharepoint

L'utilisateur est connecté au serveur de portail SharePoint.

  1. L'utilisateur ouvre une page (webpart) dans SPS - un ActiveX est démarré
  2. L'ActiveX reçoit des données à partir d'un lecteur de codes barres à quai.
  3. L'ActiveX crée un WebClient
  4. ActiveX définir les informations d'identification sur le WebClient tel qu'il est utilisé au point 1.)
  5. L'ActiveX utilise WebClient.UploadFile (..)
  6. Dans SPS une page ASPX/ascx recieve les données (comme le même utilisateur/session, au point 1.)
  7. Tout le monde est heureux (le vendredi) - et va pour la bière :)

il est le point 4. qui est le problème.

Répondre

0

Cela dépend du mécanisme d'authentification utilisé - si l'utilisateur se connecte à la page avec NTLM (windows integrated), WebClient ne peut pas réutiliser les informations d'identification. Si c'est kerberos, vous avez une meilleure chance.

1

Cela fonctionnera si les informations d'identification de l'utilisateur sont les informations d'identification de l'utilisateur actuellement connecté; ceux-ci sont envoyés par défaut lorsque UseDefaultCredentials est défini sur True dans HttpWebRequest avant l'appel de GetResponse().

Si l'utilisateur fournit différentes informations d'identification de la valeur par défaut, disent les informations d'identification négociées NTLM stockées sur le serveur, et l'utilisateur ne sélectionne pas avoir ces informations d'identification ont persisté (en cochant la case à cocher « Mémoriser mes informations »), alors l'appel ActiveX HttpWebRequest.GetResponse() lancera une exception WebException avec un message indiquant que la réponse est un 401 (non autorisé). HttpWebRequest d'ActiveX n'a ​​pas accès aux informations d'identification mises en cache utilisées pour l'authentification à l'étape (1) si elles ne sont pas conservées dans Credential Manager. Si ces informations d'identification sont conservées dans le gestionnaire d'informations d'identification, le client Web ActiveX utilisera les informations d'identification mises en cache, tant que la cible dans sa demande est identique à la cible utilisée dans la demande à l'étape; ce serait le cas si le nom d'hôte utilisé sur les deux requêtes était le même. Enfin, si vous ne disposez pas d'informations d'identification dans le contrôle ActiveX, vous pouvez les y inviter à l'aide des fonctions 0.NET Framework CredUIPromptForCredentials et CredUIPromptForWindowsCredentials. Pour plus d'informations sur ces fonctions, et beaucoup plus d'informations sur l'emballage et les utiliser correctement à partir du code managé voir Application Password Security à partir du Peer Channel Team Blog sur MSDN. En utilisant CredUIPromptForWindowsCredentials, suivi d'un appel à CredWrite, vous pouvez obtenir une invite de mot de passe transparente depuis ActiveX qui a exactement l'aspect et la convivialité utilisés par IE.

Questions connexes