SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




SPSite öffnen mit SPUserToken = 0x80070005

Unbeantwortet Dieser Beitrag hat 4 Antworten

Ohne Rang
929 Beiträge
Thomas Östreich erstellt 1 Nov. 2010 12:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

wenn ich Benutzer zu einer Security Gruppe (Global) hinzufüge und diese Gruppe wiederum in eine SPGroup stecke können sich die Benutzer an der WebSite anmelden. Wenn ich aber nun versuche dies per code durchzuführen bekommen ich eine UnauthorizedAccessException (0x80070005) bzw. beim Test bei FeatureActivated eine Umleitung für Zugriff beantragen.

Füge ich z.B. den Benutzer direkt zur SPGroup hinzu funktioniert der unten aufgeführt  Code. Ebenso funktioniert es wenn ich die Gruppe Domänen Benutzer hinzufüge aber nicht mit meiner eigenen.

Der Account der diesen Code ausführt ist SiteAdmin.

SPGroup group = web.SiteGroups["Besucher von Test1"];
foreach (SPUser user in web.AllUsers)
{
    if (!user.IsDomainGroup && user.Sid != "S-1-0-0")
    {
        try
        {
            using (SPSite site1 = new SPSite(web.Site.ID, user.UserToken))
            {
                using (SPWeb web1 = site1.OpenWeb(web.ID)) <--Throws Exception
                {
                    bool isMember = web1.IsCurrentUserMemberOfGroup(group.ID);
                    Console.WriteLine("Is User '{0}' Member of Group '{1}'", user.LoginName, isMember);
                }
            }
        }
        catch (UnauthorizedAccessException)
        {
            Debug.WriteLine("No Access for User: " + user.Name);
        }
    }
}

 Wie kann man die Umleitung eigentlich abschalten?

Alle Antworten

Ohne Rang
634 Beiträge
Olaf Didszun Als Antwort am 1 Nov. 2010 12:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zuerst die einfache Antwort:

Die Umleitung zum Beantragen des Zugriffs kannst Du unter Websiteaktionen > Websiteeinstellungen unter "Erweiterte Berechtigungen" und dann in der Funktionsleiste Einstellungen > Zugriffsanforderungen ein- und ausschalten. Hier wird auch die E-Mail-Adresse gepflegt.

Jetzt der etwas schwierigere Part: hast Du es in der Zeile, in der die Exception geworfen wird, schon mal mit einem OpenWeb-Aufruf mit der URL statt der Guid  versucht?

Eine andere Alternative kann auch sein:

 using (SPSite site1 = new SPSite(web.Url, user.UserToken))
            {
                using (SPWeb web1 = site1.OpenWeb())
                {

Grüße

Olaf

 

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 1 Nov. 2010 13:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Olaf,

danke für deine Info. Das mit der Url funktioniert leider auch nicht korrekt hat aber auch ein etwas anderes verhalten (Merkwürdig). Sobald ich den Code ausführe ohne Breakpoint bekomme ich bei der Prüfung der Gruppenzugehörigkeit eine SPException  mit folgenden Inhalt ("", NativErrorMessage FAILED hr detected (hr = 0x80020009)). Setze ich nun einen Breakpoint kann ich die Methode ausführen bekommen aber auch nicht das korrekte Ergebnis zurück (statt True -> ein False).

Es ist einfach mal wieder zum verrückt werden.

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 1 Nov. 2010 14:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So habe jetzt noch einmal die Benutzer aus SharePoint über userdisp.aspx?ID=n gelöscht, Ein direkter Zugriff auf Benutzer ist ja in 2010 irgendwie nicht möglich da diese nicht mehr in der Übersicht auftauchen so wie in WSS3 sobald sich diese das erste mal angemeldet haben.

Kann jetzt den Fehler Reproduzieren:

  • Benutzer aus Website löschen (userdisp)
  • Benutzer anmelden
  • Über Siteadmin "Berechtigung überprüfen" -> Benutzer abfragen = Zugriff möglich
  • Neue Sicherheitsgruppe zur SP Gruppe hinzufügen (mit den Benutzern)
  • Alte Sicherheitsgruppe aus der SP Gruppe entfernen
  • Benutzer anmelden (sind noch im SP eingetragen) = funktioniert
  • Siteadmin jetzt wieder prüfen = Benutzer hat kein Zugriff
  • Benutzer wieder aus SiteCollection löschen
  • Benutzer wieder anmelden
  • Siteadmin jetzt wieder prüfen = Benutzer hat Zugriff

Ob das das korrekte verhalten ist sei mal dahingestellt, es kann natürlich auch möglich sein das ein Timerjob dies bezüglich aktionen ausführt. Werden das nochmal in einen weiteren Gruppe testen.

Und der Code mit der URL verhält sich immer noch so beim Zugriff auf die besagt funktion mit einer Exception aber über die ID funktioniert es (muss wohl "by Design" sein ;-) ).

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 1 Nov. 2010 14:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Thomas Östreich"]Wie kann man die Umleitung eigentlich abschalten?[/quote]

Ganz einfach: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.suppressaccessdeniedredirectinscope.aspx