Frage

Ich habe eine ASP.NET-MVC-App, die über den Client OM mit SharePoint 2010 verbunden ist. Wenn ich generakodicetagcode ausführe, erhalte ich einen http 401-Fehler aus SharePoint.

Ich habe die MVC-App, um den angemeldeten Benutzer zu identifizieren.

Die Identifikationseinstellung in web.config (der MVC-App): generasacodicetagpre.

Der Code: generasacodicetagpre.

Die Ausnahme:

system.net.webexception: Der Remote-Server hat einen Fehler zurückgegeben: (401) nicht autorisiert. bei system.net.httpwebrequest.getResponse () bei Microsoft.Sharepoint.client.spweebrequexexecutor.execute () bei Microsoft.SharePoint.client.clientContext.SelEformDeigest () bei Microsoft.Sharepoint.client.clientContext.ExecuteQuery () bei mvcapp.services.sharepointservice.getLibraries ()

Wenn ich die Identitätseinstellung von web.config entferne, verwendet der Client OM das App-Pool-Konto der MVC-App, um eine Verbindung herzustellen. Wenn dies passiert, ist die Verbindung erfolgreich (nach Erteilung der App-Pool-Kontoberechtigungen). Wenn ich einen Benutzer-Berechtigungsnachweis eines Benutzerkrechners anstatt generellAdicetAgcode zu verwenden, funktioniert auch die Verbindung.

Die App ist für die Windows-Authentifizierung konfiguriert, und anonyme Authentifizierung ist in IIS deaktiviert.

Dinge, die wir ausprobiert haben:

    .
  1. Stellen Sie sicher, dass die App-Pool-Konten Berechtigungen delegieren können.
  2. Verifizierte Kerberos-Konfiguration (wir haben einige doppelte SPNs entfernt)
  3. Verbinden Sie sich von einem anderen Server (wir hosten diese App auf dem SharePoint-App-Server). Die Verbindung von diesem Server bedeutet, dass wir keine Verbindung zu einer beliebigen SharePoint-Instanz herstellen können. Mit der Verbindung von einem anderen Server können wir eine Verbindung zu unserer dev-Umgebung herstellen, jedoch nicht diesen Server (QA) oder unsere Produktionsumgebung.

    Was kann ich tun, um den Client OM zu erhalten, um die Benutzerberechtigungen beim Anschließen an SharePoint zu delegieren?


    update

    Interessanterweise habe ich mit identischen Ergebnissen ein einfaches Webrestest in SharePoint ausprobiert, das mir sagt, dass das Problem nicht vom Client OM verursacht wird: generasacodicetagpre.

War es hilfreich?

Lösung

Das klingt viel, als würden Sie den berüchtigten NTLM Double Hop-Problem , und es tut mir leid zu sagen, dass es keine Möglichkeit gibt, dass es nicht um die Änderung Ihrer Authentifizierung auf Ansprüche oder Kerberos darstellt.Keiner davon sollte leicht genommen werden.

Wenn Ihr Code auf einem der Maschinen in der SharePoint-Farm ausgeführt wird, versuchen Sie, miteinander zu interagieren, dann können Sie dies wahrscheinlich umgehen, indem Sie den zweiten 'Hop' insgesamt überspringen und mit SharePoint direkt über das Objektmodell auf dem Objekt interagierenServer und nicht über Webdienste.

Andere Tipps

fast zwei Jahre bestanden, aber kürzlich hatte ich mit SharePoint 2013 das gleiche Problem (ich habe tatsächlich mit SP2013 mit SP 2010 CSOM-Bibliotheken zugegriffen). Endlich habe ich es geschafft, es sortieren.

Zunächst nehme ich an, dass die Kerberos-Authentifizierung in Ihrem Fall ordnungsgemäß funktioniert. Nur um auf der sicheren Seite zu sein, können Sie die NTML-Authentifizierung in den IIS-Einstellungen ausschalten oder auf Ihrer Testseite angezeigt generasacodicetagpre.

sollte verhandeln . Es ist nicht sinnvoll, die Delegation auszuprobieren, wenn Sie sich mit NTML eigentlich anmelden, was passieren kann, wenn Sie beide erlaubt haben.

Nächstes, das Update auf Ihre Frage. Es hat mir sehr geholfen, ich habe erkannt, dass wir uns nicht um CSOM sorgen sollten, wenn die einfachste Delegation mit WeBrequest nicht funktioniert. Das Problem ist hier.

Und schließlich kann dieser unauffällige Link von der s j Antwort tatsächlich die Lösung bereitstellen - Sie haben alle Schritte beim Konfigurieren der Delegation erwähnt, mit der Ausnahme, dass die Delegation für den server zulässt. Ja, Sie müssen konfigurieren, dass Sie sowohl das Konto für die Delegation (das Sie erwähnt haben) und dieser spezifischen Maschine zur Delegation vertrauen.

und eine ganz offensichtliche Sache - der SharePoint selbst muss für die Kerberos-Authentifizierung ordnungsgemäß konfiguriert sein.

Nach der Delegation für eine Webanfrage funktioniert (z. B. Laden der Startseite), können Sie dasselbe mit CSOM tun. Ich habe es getestet, arbeitet wie ein Zauber.

Der Unterschied besteht darin, dass ich (1) SP2013 mit 2010 CSOM, (2) verwendet habe, der Delegation nur für ein bestimmtes Fragment als für die gesamte Anfrage eingeschaltet wurde: generasacodicetagpre.

hoffe das hilft jedem.

Hast du irgendwo auch generakodicetagcode?Ich glaube, das ist auch erforderlich.

Der untenstehende Link enthält einige Informationen zur Ausgabe einiger Variablen, basierend auf den Konfigurationseinstellungen des Web.config und IIS

https://stackoverflow.com/a/1688220/1282079

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top