Ordnungsgemäßes Festlegen des Ablaufdatums des Anmeldetokens für Benutzer von SharePoint 2010-SAML-Ansprüchen
Als ich mich kürzlich in die Funktionsweise des Ablaufs von Anmeldecookies einarbeitete, stieß ich auf ein ziemlich großes Problem. Sobald Benutzer von SAML-Ansprüchen ihr Anmeldecookie von ADFS erhalten haben, erfolgte kein Timeout. Das heißt, sie konnten den Browser schließen und einige Minuten oder sogar Stunden später wieder öffnen und direkt zur Website navigieren, ohne sich bei ADFS erneut authentifizieren zu müssen. Darüber hinaus arbeiteten die Office 2010-Clientanwendungen wie gewohnt. Schließlich konnte ich die Ursachen hierfür herausfinden, die ich in diesem Blog dokumentieren möchte.
Zunächst ganz kurz einige Hintergrundinformationen. Wenn Sie zum ersten Mal zu einer mit SAML-Ansprüchen gesicherten SharePoint-Website navigieren, werden Sie aufgefordert, sich zu authentifizieren und Ansprüche zu beschaffen. Ihr SAML-Identitätsanbieter (wird auch als IP-STS bezeichnet) erledigt das für Sie und leitet Sie wieder an SharePoint um. Wenn SharePoint wieder geöffnet wird, wird ein FedAuth-Cookie erstellt, wodurch erkenntlich ist, dass sie authentifiziert wurden. Um das Arbeiten des Endbenutzers zu vereinfachen, wird der Wert des FedAuth-Cookies in den lokalen Cookieordner geschrieben. Wenn für nachfolgende Anforderungen dieser Website ein gültiges FedAuth-Cookie für die Website gefunden wird, wird das Cookie gelesen und der SharePoint-Inhalt wird ohne erneute Authentifizierung direkt angezeigt. Dies kann für jene Benutzer, die an ADFS 1.x und SharePoint 2007 gewöhnt sind, ein bisschen überraschend sein, da in diesen Anwendungen alle Web-SSO-Cookies sitzungsbasiert waren und deshalb nicht auf dem Datenträger gespeichert wurden. Beispielsweise wurde beim Schließen des Browsers das Cookie gelöscht, weshalb Sie sich jedes Mal erneut authentifizieren mussten, wenn Sie den Browser schlossen oder öffneten. Das ist bei SharePoint 2010 nicht der Fall.
UPDATE 1: Wir fanden heraus, wie der SharePoint-Sicherheitstokendienst (Security Token Service, STS) geändert werden muss, damit er wieder mit Sitzungscookies verwendet werden kann, wie dies bei SharePoint 2007 der Fall war. Hierzu ist der folgende PowerShell-Code erforderlich:
$sts = Get-SPSecurityTokenServiceConfig$sts.UseSessionCookies = $true$sts.Update()iisreset
Anschließend wird kein FedAuth-Cookie mehr auf den Datenträger geschrieben. Zum Zurücksetzen auf das Standardverhalten führen Sie die Schritte einfach in umgekehrter Reihenfolge aus:
$sts.UseSessionCookies = $false$sts.Update()iisreset
Wie konfigurieren wir aber dieses Verhalten, um ein SAML-Token mit einer akzeptablen Lebensdauer zu erhalten? Folgendes müssen Sie beachten:
UPDATE 2: Rich Harrison war so freundlich, den folgenden Code zum Aktualisieren der TokenLifetime-Eigenschaft in ADFS für die vertrauende Seite bereitzustellen:
Set-ADFSRelyingPartyTrust -TargetName "SPS 2010 ADFS" -TokenLifetime 5 wobei "SPS 2010 ADFS" der Name der Vertrauensstellungsentität der vertrauenden Seite in AD FS 2.0 ist.
Wenn Sie also zum Erstellungszeitpunkt die TokenLifetime-Eigenschaft der vertrauenden Seite in ADFS festlegen möchten, müssen Sie dazu PowerShell verwenden. Ich habe das folgende einzeilige Skript zum Erstellen der vertrauenden Seite verwendet:
Add-ADFSRelyingPartyTrust -Name "FC1" -Identifier "https://fc1/_trust/" -WsFedEndpoint "https://fc1/_trust/" -TokenLifetime 2 -SignatureAlgorithm http://www.w3.org/2000/09/xmldsig#rsa-sha1
Nachdem Sie die vertrauende Seite auf diese Weise erstellt haben, müssen Sie folgende Schritte manuell ausführen:
$sts = Get-SPSecurityTokenServiceConfig
$sts.LogonTokenCacheExpirationWindow = (New-TimeSpan –minutes 1)
$sts.Update()
Iisreset
Nachdem Sie diese Einstellungen ordnungsgemäß konfiguriert haben, läuft die Anmeldung für SAML-Benutzer ordnungsgemäß ab. Sie können 2 Minuten lang das Browserfenster öffnen und schließen und die Website erneut öffnen, ohne wieder an SharePoint umgeleitet zu werden. Nach Ablauf dieses Zeitraums müssen Sie sich jedoch wieder bei ADFS authentifizieren.
Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter Setting the Login Token Expiration Correctly for SharePoint 2010 SAML Claims Users