Direkt zum Hauptbereich

Claims Based Authentication to Classic Mode Authentication

Ich habe mich dieser Tage damit beschäftigen müssen die Authentifizierung einer SharePoint-Webanwendung umzustellen. Ich werde mich hier nicht weiter um die Beschreibung der Authentifizierungsmethoden kümmern, das wurde auf blogs.msdn.com von Russ Maxwell bereits erfolgreich und verständlich getan.

Ich habe nun das folgende Szenario:
Es läuft eine Webanwendung mit der Claims-Based-Authentication Methode. Diese Webanwendung muss auf Classic Mode Authentifizierung umgestellt werden. Zuerst ändern wir die Webanwendung einfach von Claims Based auf Classic Mode. Da wir hier nicht die Möglichkeit haben die Änderungen über die UI zu machen greifen wir auf die wunderbaren SharePoint-2010 cmdlets zurück ;-)

$web = Get-SPWebApplication http://MyWebApplication
$web.UseClaimsAuthentication = 0
$web.Update()
$web.ProvisionGlobally()

Nun überprüfen wir noch, ob die Änderungen auch gegriffen haben:

$web = Get-SPWebApplication http://MyWebApplication
$web.UseClaimsAuthentication

Als Ergebnis wird uns ein "false" zurückgeliefert, also die Webanwendung läuft jetzt wieder unter Classic Mode Authentifizierung. Als Benutzer erhält man nun einen "Access denied", Grund dafür sind die Claims der Benutzer (wir werden nicht als gültiger Benutzer authentifiziert), diese müssen nun noch entfernt/rückgängig gemacht werden.
Wenn man sich dann mal die verfügbaren Methoden zum Migrieren der Benutzer ansieht (msdn.microsoft.com) sollte es doch recht einfach sein. Wenn es jedoch wirklich so einfach wäre, dann müsste ich hier nicht weiter darauf eingehen :-)

Wenn wir den folgenden Befehl ausführen:

$web = Get-SPWebApplication http://MyWebApplication
$web.MigrateUser($false)

erhalten wir die folgende Fehlermeldung:



Hier haben wir dann auch das eigentliche Problem. Nach einigen Recherchen wurde ich dann auch fündig und scheinbar ist das Zurücksetzen von Claims Based auf Classic Mode derzeit noch nicht unterstützt. Aber bei meinen Recherchen sind mir dann ein paar Ideen gekommen, die mich zu dem folgenden Entschluss kommen ließen (Ich habe das Ganze zunächst natürlich in einer Stage-Umgebung getestet):

  1. Backup der WebApplication (Worst Case)
  2. Backup der Inhaltsdatenbank/en
  3. WebApplication löschen (nur die IIS-Site => auf der bestehenden Webanwendung konnte ich das unten folgende PowerShell Script nicht erfolgreich ausführen)
  4. WebApplication neu anlegen
  5. Eventuell vorhandene AAM's neu setzen
  6. Mounten der Inhaltsdatenbank/en
  7. Zurücksetzen der Site-Collection-Administratoren (haben noch den Claim)
  8. Folgendes PowerShell-Script ausführen (Farm-Administrator Account)

function GetClaimBasedUserName($user)
{
    $username = ''
    try
    {
        if ($user.IsDomainGroup)
        {
            if ($user.LoginName.StartsWith('c:0+.w|'))
            {
                $username = $user.LoginName.Substring(7)
            }
        }
        else
        {
            if ($user.LoginName.StartsWith('i:0#.w|'))
            {
                $username = $user.LoginName.Substring(7)
            }
        }
    }
    catch [Net.WebException]
{
$WebExceptionMessage = $_.Exception.Message
Write-Host $WebExceptionMessage
    }
    return $username
}

$site = Get-SPSite 'http://portal.test.com'
$web = $site.RootWeb

foreach ($user in $web.AllUsers)
{
  $username = GetClaimBasedUserName($user)
if (!$username.Equals(""))
                {
                    write-host "Migrating..."
                    try
                    {
$farm = Get-SPFarm
$farm.MigrateUserAccount($user.LoginName, $username, $false)
write-host 'Done'
                    }
                    catch [Net.WebException]
{
$WebExceptionMessage = $_.Exception.Message
Write-Host $WebExceptionMessage
}
                }
}


Ich wünsche dann mal viel Spaß beim Umstellen der Claims Based Authentication.

Viele Grüße
Patrick

Kommentare

Beliebte Posts aus diesem Blog

Verwaltung von Microsoft Teams über das Office 365 Admin Center

Microsoft Teams - derzeit das Tool zur Steigerung der Produktivität und Zusammenarbeit im Unternehmen. Für die Endanwender ergeben sich viele Vorteile, wie. z.B. die schnelle Bereitstellung der notwendigen Funktionalitäten für eine effektive Zusammenarbeit oder auch die Einbindung unterschiedlicher Dienste und Konnektoren . Schnell hat man als Anwender einen externen Dienst oder Anwendung, wie z.B. MindMeister oder auch BitBucket hinzugefügt ohne das Arbeitstool, in diesem Fall MS Teams, verlassen zu müssen - kein Hin- und Herspringen mehr in Browsern oder Anwendungen. Wo die Daten liegen spielt hier eher eine untergeordnete Rolle. Oder mal eben einen weiteren Cloud-Speicher wie z.B. Dropbox hinzugefügt. Was kann man als Endanwender noch mehr verlangen - auch mobil arbeiten zu können - aber auch das ist kein Problem mehr dank verfügbarer Apps. Das hört sich doch alles mehr als gut an - wären da nicht auch die IT-Administratoren, rechtlichen Grundlagen und Unternehmensrichtlinien. Wel

Benutzer einer SharePoint-Gruppe auslesen (Data One Power Activity for Nintex Workflow)

Ich habe dieser Tage ein kleines Problem mit der Nintex-Aktivität << Data Request >> gehabt. Derzeit ist es leider nur möglich dieser Aktivität einen Benutzer zuzuweisen. Was nun aber tun, wenn mehrere Benutzer diese Dateneingabe vornehmen sollen. Man kann das Ganze umgehen, indem man eine neue SharePoint-Gruppe anlegt und die Benutzer in dieser Gruppe einpflegt. Hier bin ich dann jedoch auf das nächste Problem gestoßen. Die SharePoint-Gruppe wird nicht aufgelöst, so dass die Aufgabe nicht in den Nintex-Webpart << Meine Workflowaufgaben >> angezeigt wird. Ich habe mir nun Gedanken über eine mögliche Lösung gemacht und bin zu folgendem Ergebnis gekommen. Schritt 1: SharePoint Webservice Auslesen der SharePoint-Gruppe mit dem SharePoint Webservice (http://sharepoint/_vti_bin/UserGroup.asmx) und der Methode << GetUserCollectionFromGroup >>. Als Ergebnis bekommen wir folgendes XML-Konstrukt (aus Darstellungsgründen habe ich es auf den LoginName besch

Google Chrome Tastaturlayout

Ich hatte heute das Problem, dass sich mein Tastaturlayout in meinem Google Chrome Browser geändert hat. Auf einmal stand mir mir nur das englische Tastaturlayout zur Verfügung. Ich habe mich dann auf die Suche in den Browsereinstellungen gemacht und mich dem Punkt << Sprachen >> (in den erweiterte Einstellungen zu finden) gewidmet. Die Einstellungen sehen in Ordnung aus, somit kam dann eigentlich nur noch eine Tastenkombination zum Umschalten des Tastenlayouts in Frage. Bei meiner Suche auf google ;-) habe ich dann auch schnell die folgende Kombination Alt+Shift gefunden. Einmal ausgeführt und schon habe ich wieder mein gewohntes Tastaturlayout. Viele Grüße, Patrick