Ein Token ist nicht genug

Falls Sie ab und an Schaumweine (Prosecco, Champagner) oder auch Rotwein geniessen, wird Ihnen Cuvée ein Begriff sein. Generell versteht man darunter oft eine Mischung von Weinen, die sich gegenseitig im Geschmack ergänzen. Ganz so einfach ist es aber nicht, womit wir thematisch bei dem Token in SharePoint on Premise (und durch Claim Based Authentication auch in der Cloud) wären.

Es gibt da nämlich je nach Konfiguration drei Token:

  • den Windows Token für alle, die via NTLM oder Kerberos auf den SharePoint kommen
  • den Forms Token für alle, die via Forms authentifiziert werden
  • den ADFS Relying Party’s Token, eigentlich das Äquivalent zur Token Lifetime unter Windows, nur halt für ADFS, d.h. wenn via Claims authentifziert wird

Diese haben alle eine Lifetime, die eine relative Bedeutung für ihre Existenz hat (und wo man Überlappungen berücksichtigen muss), dementsprechend:

  • die WindowsTokenLifetime, standardmässig auf 10 Stunden. Ich kann sie mittels PowerShell abfragen:
$SecTokenService = Get-SPSecurityTokenServiceConfig
$SecTokenService.WindowsTokenLifetime = New-TimeSpan -Hours 10
$SecTokenService.Update()
  • die FormsTokenLifetime, standardmässig auf 10 Stunden. Ich kann sie ebenfalls mittels PowerShell abfragen:
$SecTokenService = Get-SPSecurityTokenServiceConfig
$SecTokenService.FormsTokenLifetime = New-TimeSpan -Hours 10
$SecTokenService.Update()
  • die ADFS RP’s TokenLifetime, standardmässig auf 60 Minuten. Wir können sie – na? – per PowerShell abfragen:
Get-AdfsRelyingPartyTrust | ft -auto Name,TokenLifetime

Keine Sorge, da kommt 0 zurück, das heisst 0 Abweichung vom Standard.

Dazu gibt es einige limiterende Faktoren. Die geringste ist wohl die Cookie-Lifetime des SharePoint (Client-)Cookies. Sie liegt bei 5 Tagen, kann aber geändert werden:

$SecTokenService = Get-SPSecurityTokenServiceConfig
$SecTokenService.CookieLifetime = New-TimeSpan -Days 5
$SecTokenService.Update()

Direkter „gegen“ die Lifetime arbeitet die LogonTokenCacheExpirationWindow. Sie wird praktisch von der Lifetime abgezogen (diese ist also kürzer als sie, nun ja, ist). Grund ist, dass ein Token, der aus dem Distributed Logon Token Cache gezogen wird, nur noch 10 Sekunden zu leben hat und damit praktisch sofort wirklich ungültig wird. Daher behandelt ihn der SharePoint-Tokenmechanismus als abgelaufen, wenn das Window greift, und er kann in Ruhe erneuert werden (so wie Sie Ihre ID-Karte auch nicht erst am Ablauftag erneuern). Es sind standardmässig 10 Minuten (alle Tokens leben also 10 Minuten kürzer). Wir können ihn mit PowerShell abfragen/ändern:

$SecTokenService = Get-SPSecurityTokenServiceConfig
$SecTokenService.LogonTokenCacheExpirationWindow = New-TimeSpan -Minutes 10
$SecTokenService.Update()

Logischerweise darf die LogonTokenCacheExpirationWindow niemals kürzer sein als irgendeine Token-Lifetime (die für mich wichtig ist), sonst wird der Token ständig als ungültig gerendert.

Der Token-Timeout ist der Timeout für den in der Content-DB gespeicherte Benutzertoken (mit Gruppenzugehörigkeiten usw.), der insbesondere für das Security Trimming von SharePoint wichtig ist. Er läuft alle 24 Stunden ab, verschiedene Funktionen können aber einen frischeren Token fordern (z.B. Check Permission, der hätte gerne 60 Minuten). Auch er ist via PowerShell veränderbar:

$SecTokenService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$SecTokenService.TokenTimeout = New-TimeSpan -Minutes 5
$SecTokenService.Update()

Das Ganze kann man etwa so darstellen:
Diagramm der verschiedenen Token-Lifetimes

So ganz einfach ist das also mit den Tokes bei SharePoint nicht (und es gibt noch mehr Aspekte, die hier aber zu weit führen würden). Wie mit unserem Cuvée, denn die Bedeutung der Weinmischung (nicht Maische!) ist nur im deutsschprachigen Raum verbreitet. Bei guten Sauternes (der wunderbar süssliche Wein mit den edelfaulen Trauben) steht z.B. manchmal Tête de cuvée auf der Flasche – das ist kein Verschnitt, sondern das Spitzenprodukt eines Weinguts. Und ganz allgemein heisst Cuvée einfach „einen Behälter voll“, so wie Token eigentlich auch nur das „Zeichen“ ist.

Hinterlassen Sie eine Antwort