Dieser kleine Blogartikel zeigt Ihnen, wie Sie sich zu einem SharePoint bzw. einer SharePoint Site Collection verbinden können, in welchem/welcher mehr als nur ein Authentifizierungsprovider aktiviert ist – also eine Art Multi-Authentifizierung.

Anmeldung

Einige Kunden nutzen den SharePoint sowohl intern als auch extern und verwenden für den internen Zugriff die Windowsauthentifizierung und für den externen Zugriff eine Formularauthentifizierung oder andere Provider (z.B. ADFS-Zertifikatsauthentifizierung). Bei vielen dieser Konstellationen wird für beide Authentifizierungsformen nur eine einzige URL verwendet.

Hier kommen wir auch schon zum Problem, auf das viele Entwickler stoßen: Beim Herstellen einer Verbindung mit dem SharePoint über bspw. .NET CSOM (Clientobjektmodell) bekommt man die Fehlermeldung, dass kein Zugriff zum SharePoint möglich sei. Das liegt daran, dass hier nochmal explizit „gesagt“ werden muss, dass wir einen bestimmten Provider nutzen wollen. Das erreicht man, indem man zusätzliche Informationen im Header des Requests mitgibt. In diesem Fall zeige ich Ihnen ein Beispiel mit Windowsauthentifizierung:

//Erstellen des ClientContext

ClientContext context = new ClientContext(URL);

//Konfigurieren des EventHandlers

context.ExecutingWebRequest +=

new EventHandler(addHeaderInfo);

//Setzen der Windowsauthentifizierungsinformationen

context.AuthenticationMode = ClientAuthenticationMode.Default;

context.Credentials = System.Net.CredentialCache.DefaultCredentials;

//Holen der SharePoint Objekte

Web web = context.Web;

var lstColl = context.LoadQuery(web.Lists);

//Execute the query.

context.ExecuteQuery();

//…

Die gesamte „Magie“ passiert in der addHeaderInfoMethode, die wir über den konfigurierten Event-Handler aufrufen. Der übergebene Name der Headers ist „X-FORMS_BASED_AUTH_ACCEPTED“ und der Wert ist „f“. Mit diesen Headerinformationen sagen wird dem SharePoint, mit welcher Authentifizierungsmethode wir uns anmelden möchten (in unserem Fall Windowsauthentifizierung):

void addHeaderInfo(object sender, WebRequestEventArgs e)
{
try
{
//Hinzufügen der Header-Info, die dem SharePoint sagt: Verwende die Windowsauthentifizierung
e.WebRequestExecutor.RequestHeaders.Add(
„X-FORMS_BASED_AUTH_ACCEPTED“, „f“);
}
catch (Exception ex)
{
MessageBox.Show(„Fehler beim setzen des Request Headers: „ + ex.Message);
}
}

Viel Spaß beim Ausprobieren!


Weitere Tutorials?

Natürlich haben wir noch mehr wertvolle Tipps rund um SharePoint für Sie!