Vorgehensweise: Festlegen verschiedener Anmeldeinformationen

Letzte Änderung: Mittwoch, 7. April 2010

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
So verwenden Sie die Anmeldeinformationen des aktuellen Benutzers
So verwenden Sie verschiedene Sätze von Anmeldeinformationen
So verwenden Sie einen anderen Satz von Anmeldeinformationen

Sie müssen für die Benutzer Anmeldeinformationen festlegen, bevor sie Excel-Webdienste mithilfe Ihrer benutzerdefinierten Anwendung aufrufen können. Anmeldeinformationen müssen explizit festgelegt werden, auch wenn Sie beabsichtigen, die Standardanmeldeinformationen zu verwenden. In Excel-Webdienste werden die Authentifizierungsschemas verwendet, die von Microsoft SharePoint Foundation unterstützt werden. Weitere Informationen zu SharePoint Foundation-Authentifizierungsschemas finden Sie in der Dokumentation zu SharePoint Foundation in diesem SDK und unter Eingehende Ansprüche: Anmelden bei SharePoint.

In den folgenden Beispielen wird gezeigt, wie Sie Anmeldeinformationen festlegen.

So verwenden Sie die Anmeldeinformationen des aktuellen Benutzers

Im folgenden Code werden die Anmeldeinformationen des aktuellen Benutzers verwendet, um eine Anforderung an den Webdienst zu stellen.

//Instantiate the Web service.
    ExcelService xlService = new ExcelService();
//Set credentials for requests.
    xlService.Credentials = System.Net.CredentialCache.DefaultCredentials;
'Instantiate the Web service.
Dim xlService As New ExcelService()
'Set credentials for requests.
xlService.Credentials = System.Net.CredentialCache.DefaultCredentials

So verwenden Sie verschiedene Sätze von Anmeldeinformationen

Im folgenden Code werden die Anmeldeinformationen des aktuellen Benutzers verwendet, um eine Anforderung an den Webdienst zu stellen.

Beispielcode von: Saif Ullah Baig, Microsoft Corporation.

        protected string farmURL, docLibPath, workbookPath, uiCulture, dataCulture, localTempFolder, authenticationType;
        protected Cookie authCookie;

        protected API.ExcelService api;
        protected Constants.XLS_VER version;
        

        public VariousAuthScheme(Constants.XLS_VER ver, string farmurl, string docLib, string fileName, 
            string uic, string datac,
            string userName, string password, string domain,
            string localTemp, string authType)
        {
            api = new API.ExcelService();

            farmURL = farmurl;

            if (!farmURL.EndsWith("/"))
            {
                farmURL += "/";
            }

            api.Url = farmURL + "_vti_bin/ExcelService.asmx";

            
            version = ver;

            if (!docLib.EndsWith("/"))
            {
                docLib += "/";
            }

            workbookPath = farmURL + docLib + fileName;
            docLibPath = farmURL + docLib;
            uiCulture = uic;
            dataCulture = datac;
            localTempFolder = localTemp;
            authenticationType = authType;

            switch (authType)
            {
                case "Windows-Classic":
                    authenticationType = "Windows-Classic";
                    AuthenticateWindowsClassic(domain, userName, password);
                    break;

                case "Windows-Claims":
                    authenticationType = "Windows-Claims";
                    AuthenticateWindowsClaims();
                    break;

                case "FBA-Claims":
                    authenticationType = "FBA-Claims";
                    if (!AuthenticateFBAClaims(userName, password))
                        throw new Exception("FBA-Claims authentication failed");
                    break;

                case "Anonymous":
                    authenticationType = "Anonymous";
                    break;

                default:
                    throw new Exception ("Undefined authentication type specified: " + authType);
                    break;
            }
        }

        protected void AuthenticateWindowsClassic(string domain, string userName, string password)
        {
            if (userName != null && userName.Length > 0)
            {
                api.Credentials = new System.Net.NetworkCredential(userName, password, domain);
            }
            else
            {
                api.Credentials = System.Net.CredentialCache.DefaultCredentials;
            }

            // Verify set credentials.
            System.Net.NetworkCredential cred = (System.Net.NetworkCredential) api.Credentials;
            Console.WriteLine(@"Credentials set to: {0}\{1}", cred.Domain, cred.UserName);
        }

        protected void AuthenticateWindowsClaims()
        {
            throw new Exception ("Windows-Claims Authentication method not implemented");
        }

        protected bool AuthenticateFBAClaims(string userName, string password)
        {
            FBA.Authentication spAuthentication = new FBA.Authentication();
            spAuthentication.Url = farmURL + "_vti_bin/Authentication.asmx";
                          
            spAuthentication.CookieContainer = new CookieContainer();

            FBA.LoginResult loginResult = spAuthentication.Login(userName, password);
            authCookie = new Cookie();
                
            // Determines if login is successful.
            if (loginResult.ErrorCode == FBA.LoginErrorCode.NoError)
            {
                // Get the cookie collection from the authenticating Web service.
                CookieCollection cookies = spAuthentication.CookieContainer.GetCookies(new Uri(spAuthentication.Url));

                // Get the specific cookie that contains the security token.
                authCookie = cookies[loginResult.CookieName];

                // Initialize the cookie container of Excel Web Services.
                api.CookieContainer = new CookieContainer();
                api.CookieContainer.Add(authCookie);

                return true;
            }
            else
            {
                return false;
            }
        

So verwenden Sie einen anderen Satz von Anmeldeinformationen

Im folgenden Code werden die Anmeldeinformationen des aktuellen Benutzers verwendet, um eine Anforderung an den Webdienst zu stellen.

//Instantiate the Web service.
ExcelService xlService = new ExcelService();

public void VerifyCredentials()
   {
    //Check whether the default credentials
    //should be used instead.  
       if (DefaultCredentialsCheckBox.Checked)
 {
     xlService.Credentials =     
        System.Net.CredentialCache.DefaultCredentials;
  }
  else
  {
      //Check whether user-defined credentials
         //should be used instead.
      System.Net.NetworkCredential userDefined = new 
         System.Net.NetworkCredential(
            LoginNameTextBox.Text,
LoginPWDTextBox.Text,
LoginDomainTextBox.Text);

         xlService.Credentials = userDefined;          
      }
}
'Instantiate the Web service.
Private xlService As New ExcelService()

Public Sub VerifyCredentials()
    'Check whether the default credentials
    'should be used instead.  
       If DefaultCredentialsCheckBox.Checked Then
     xlService.Credentials = System.Net.CredentialCache.DefaultCredentials
  Else
      'Check whether user-defined credentials
         'should be used instead.
      Dim userDefined As New System.Net.NetworkCredential(LoginNameTextBox.Text, LoginPWDTextBox.Text, LoginDomainTextBox.Text)

         xlService.Credentials = userDefined
  End If
End Sub

In diesem Beispiel sind LoginNameTextBox, LoginPWDTextBox und LoginDomainTextBox die Name-Eigenschaftswerte der Anmeldetextfelder.

Weitere Informationen zum Einsatz der CredentialCache-Klasse und der NetworkCredential-Klasse sowie zu deren sicheren Verwendung finden Sie in der Dokumentation zu Microsoft Visual Studio oder unter NetworkCredential Class.

Siehe auch

Aufgaben

Schritt 1: Erstellen des Webdienst-Clientprojekts

Schritt 2: Hinzufügen eines Webverweises

Schritt 3: Zugreifen auf den Webdienst

Schritt 4: Erstellen und Testen der Anwendung

Exemplarische Vorgehensweise: Entwickeln einer benutzerdefinierten Anwendung mithilfe der Excel-Webdienste

Konzepte

Zugreifen auf die SOAP-API