Übersicht über das SharePoint-Objektmodell für die mobile Clientauthentifizierung

Wichtig

LEGACYINHALTE Dieser Artikel wird nur zur Historischen Referenz aufbewahrt. Es werden veraltete SharePoint-Authentifizierungs-APIs für Silverlight- und Windows Phone-Anwendungen beschrieben.

Diese APIs und Plattformen werden nicht mehr unterstützt. Verwenden Sie für den aktuellen Entwicklungsleitfaden Folgendes:

  • Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library (MSAL), MSAL)
  • Microsoft Graph-API
  • SharePoint Online-REST-APIs mit OAuth 2.0

Erhalten Sie eine Übersicht über die Entwicklung mit den Authentifizierung-APIs des SharePoint-Clientobjektmodells für Silverlight.

Authentifizierung und Clientkontext auf einem Windows Phone

Der Prozess der Authentifizierung eines SharePoint-Benutzers auf einem Windows Phone 7.5 ist ein wenig anders als derselbe Prozess auf einem Clientcomputer. Clientcode auf einem Windows Phone 7.5 erstellt zunächst ein Objekt der Authenticator -Klasse oder ODataAuthenticator -Klasse, die dem SharePointClient Objektmodell für Microsoft Silverlight für Windows Phone hinzugefügt wurden. Dann wird dieses Objekt als Anmeldeinformationen des Benutzers verwendet.

Hinweis

Weitere Informationen zu den APIs, die in diesem Abschnitt erläutert werden, finden Sie unter Übersicht über das mobile SharePoint-Objektmodell. Weitere Informationen zum SharePoint-Clientobjektmodell für Silverlight finden Sie unter Verwaltetes Clientobjektmodell und Verwenden des Silverlight-Objektmodells.

Authentifizieren des Benutzers im SharePoint-Clientobjektmodell für Silverlight

Nachfolgend finden Sie die erforderlichen Schritte, um ein authentifiziertes Clientkontextobjekt abzurufen:

  1. Abrufen eines ClientContext -Objekts.

  2. Erstellen Sie ein neues Authenticator -Objekt, und initialisieren Sie dessen Eigenschaften.

    Hinweis

    Ein Authenticator -Objekt kann nur mit einem ClientContext -Objekt verwendet werden. Sie können ein Authenticator Objekt nicht für mehrere ClientContext Objekte mit unterschiedlichen URLs freigeben.

  3. Die Authenticator -Klasse implementiert die ICredentials -Schnittstelle, sodass Sie das -Objekt der Credentials -Eigenschaft des ClientContext -Objekts zuweisen.

Anschließend können Sie den restlichen Code Ihres Clientobjektmodells hinzufügen und aufrufen ExecuteQueryAsync.

Im folgenden Code werden diese Schritte veranschaulicht.

ClientContext context = new ClientContext(ListUrl);

// Create an instance of Authenticator object.
Authenticator at = new Authenticator();

// Replace <username> and <password> with valid values.
at.UserName = "<username>";
at.Password = "<password>";
at.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;

at.CookieCachingEnabled = true;

// Assign the instance of Authenticator object to the ClientContext.Credential property.
// ClientContext is the object that is central to the client object model for making
//   calls to the server running SharePoint for fetching and updating data.
context.Credentials = at;

ListItemCollection items = context.Web.Lists.GetByTitle(ListName)
                                            .GetItems(CamlQuery.CreateAllItemsQuery());

// Load the query and execute the request to fetch data.
context.Load(items);
context.ExecuteQueryAsync(
  (object obj, ClientRequestSucceededEventArgs args) => {
    // Success logic
  },
  (object obj, ClientRequestFailedEventArgs args) =>{
    // Failure logic
  });

Optional können Sie einen UAG-Server (Unified Access Gateway) angeben, indem Sie die Authenticator.UagServerUrl -Eigenschaft festlegen.

Wenn die SharePoint-URL eine einfache oder formularbasierte Authentifizierungsunterstützung aufweist, ExecuteQueryAsync werden die Aufrufe den Benutzer zur Eingabe von Anmeldeinformationen auffordern, wie in Abbildung 1 dargestellt. Andernfalls führt der Aufruf zu einem Fehler. Aktivieren Sie die einfache oder formularbasierte Authentifizierungsautorisierung auf der SharePoint-Website, um einen Authentifizierungsfehler zu vermeiden.

Abbildung 1: SharePoint-Clientauthentifizierung

SharePointClientAuthentication

Der Benutzer gibt den Benutzernamen und das Kennwort ein, und wählt Anmelden aus, wie in Abbildung 1 gezeigt. Der Benutzer hat die Möglichkeit Anmeldeinformationen speichern auszuwählen, damit der Benutzername gespeichert wird, und er kann Kennwort speichern auswählen, um das Kennwort zu speichern, wie in Abbildung 1 dargestellt. Nachdem der Benutzername oder das Kennwort gespeichert wurde, muss der Benutzer beim nächsten Start der App die Anmeldeinformationen nicht mehr eingeben. Verwendet ExecuteQueryAsync dann die angemeldeten Anmeldeinformationen, um Webanforderungen an den Server zu senden, auf dem SharePoint ausgeführt wird, um Daten abzurufen.

Authentifizieren des Benutzers im SharePoint-OData-Objektmodell

Nachfolgend finden Sie die erforderlichen Schritte, um ein authentifiziertes OData-Kontextobjekt abzurufen:

  1. Erstellen Sie ein neues ODataAuthenticator -Objekt, und initialisieren Sie dessen Eigenschaften.
  2. Registrieren Sie einen Handler für das AuthenticationCompleted-Ereignis.
  3. Rufen Sie die ODataAuthenticator.Authenticate -Methode auf, die das AuthenticationCompleted-Ereignis auslöst.
  4. Rufen Sie ein OData-Kontextobjekt innerhalb des Handlers OnAuthenticationCompleted ab.

Anschließend können Sie die restlichen OData-Aufrufe im OnAuthenticationCompleted Handler hinzufügen.

Im folgenden Code werden diese Schritte veranschaulicht.

ODataAuthenticator oat = new ODataAuthenticator();

// Replace <username> and <password> with valid values.
oat.UserName = "<username>";
oat.Password = "<password>";

oat.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;

oat.AuthenticationCompleted +=
           new EventHandler<SendingRequestEventArgs>(OnAuthenticationCompleted);

// The Authenticate method will raise the AuthenticationCompleted event.
oat.Authenticate("My_service_URL");

Der Code muss auch zwei Ereignishandler implementieren, wie im folgenden Abschnitt beschrieben.

Implementieren der OnAuthenticationCompleted- und OnSendingRequest-Handler und Abrufen des ClientContext-Objekts

Eine Implementierung des OnAuthenticationCompleted Handlers sollte zuerst auf Fehler bei der Authentifizierung überprüfen. Wenn Fehler vorhanden sind, sollten diese entsprechend behandelt werden, z. B. Anzeigen einer Fehlermeldung für den Benutzer, und beenden Sie dann den Vorgang.

Wenn keine Fehler auftreten, sollte der Handler eine instance eines neuen DataServiceContext Objekts erstellen und dann einen Handler für das SendingRequest-Ereignis registrieren. Ab diesem Punkt wird der OData-Aufrufcode für das DataServiceContext -Objekt genau wie auf einem Computer programmiert.

Es folgt ein Beispiel für eine Implementierung eines OnAuthenticationCompleted Handlers.

void OnAuthenticationCompleted(object sender, AuthenticationCompletedEventArgs e)
{
  if (e.Error != null)
  {
    MessageBox.Show(error);
    return;
  }
  ODataAuthenticator oat = sender as ODataAuthenticator;

  // Construct an OData context object.
  contextObj = new DataServiceContext(oat.ResolvedUrl);

  // Register the SendingRequest event handler.
  contextObj.SendingRequest +=
    new EventHandler<SendingRequestEventArgs>(OnSendingRequest);

  // Your data retrieval logic goes here.
  // For example, if there is a GetData method:
  // contextObj.GetData();
}

Der Handler muss nur OnSendingRequest den Cookiecontainer des Request Objekts auf den Cookiecontainer des ODataAuthenticator Objekts festlegen. Es folgt ein Beispiel.

void OnSendingRequest(object sender, SendingRequestEventArgs e)
{
  ODataAuthenticator oat = sender as ODataAuthenticator;
  ((HttpWebRequest)e.Request).CookieContainer = oat.CookieContainer;
}

Erweiterte Nutzung

  1. Sie können ein Authenticator Objekt mit einer hartcodierten Option für Benutzername/Kennwort erstellen. Der Benutzer der App wird nicht zur Eingabe eines Benutzernamens und Kennworts aufgefordert, und hartcodierte Anmeldeinformationen werden für die Authentifizierung des Benutzers verwendet.

    public Authenticator(string userName, string password)
    public Authenticator(string userName, string password, string domain)
    

    Derselbe Konstruktor kann zum Erstellen einer benutzerdefinierten Anmeldeseite verwendet werden. Sie können eine benutzerdefinierte Anmeldeseite schreiben, indem Sie die Anmeldeinformationen aus CodeBehind-Dateien übergeben.

    Authenticator at = new Authenticator();
    at.AuthenticationMode = ClientAuthenticationMode.MicrosoftOnline;
    
  2. Der Authentifizierungstyp kann festgelegt werden. Standardmäßig wird die Standardauthentifizierung verwendet.

Authentifizierung über SharePoint Online

Legen Sie für die Authentifizierung bei einer SharePoint Online-URL die AuthenticationMode -Eigenschaft des Authenticator Objekts auf den Modus fest MicrosoftOnline . Die verbleibenden Schritte des Verfahrens sind dieselben wie für eine lokale SharePoint-URL.

Hinweis

Der Benutzername und das Kennwort können für SharePoint Online nicht hartcodiert werden. Der Benutzer wird zur Eingabe von Anmeldeinformationen aufgefordert.

Verbundauthentifizierung

FederationAuthURI -Eigenschaft wird verwendet, um die ADFS-Authentifizierungsschemapräferenz zu übergeben, wobei ADFS für die Verwendung mehrerer Authentifizierungshandler konfiguriert ist. FederationAuthURI gibt den Typ der Authentifizierung an, der für die Authentifizierungsanforderung erforderlich ist, wenn die SharePoint Online-Authentifizierung mit dem Verbund verwendet wird. Dieser Parameter kann die Priorität außer Kraft setzen, die von der Reihenfolge der Konfiguration der Authentifizierungshandler aufgestellt wurde. Weitere Informationen zu Authentifizierunghandlern finden Sie unter Übersicht über Authentifizierungshandler.

Authenticator auth = new Authenticator("domain\\\\name", "xyz");
auth.FederationPassiveAuthUri = "urn:oasis:names:tc:SAML:2.0:ac:classes:Password";

// Replace <SiteUrl> with valid value
ClientContext ctx = new ClientContext("SiteUrl");
ctx.Credentials = auth;
ctx.ExecuteQueryAsync(
  (object sender, ClientRequestSucceededEventArgs args) =>
  {
    /* successful callback code */
  },
  (object sender, ClientRequestFailedEventArgs args) =>
  {
    /* failure callback code */
  });

ADFS ist eine optionale Eigenschaft, die nur wirksam wird, wenn sie mit Microsoft Office SharePoint Online verwendet wird. Die Verwendung der AD FS-Authentifizierung mit einem anderen Authentifizierungsschema hat keine Auswirkungen. Wenn ADFS nicht festgelegt ist, wird bei Microsoft Office SharePoint Online das Standardschema verwendet, d. h. die Servereinstellung.

Die Authenticator -Klasse enthält auch Member, die Sie verwenden können, um das Zwischenspeichern von Cookies oder Anmeldeinformationen oder beides zu aktivieren und zu verwalten. Informationen zu diesen Membern der Authenticator -Klasse und deren Verwendung finden Sie unter Übersicht über das mobile SharePoint-Objektmodell.

Siehe auch