Access Denied (Token Kerberos su Windows 2008)

E’ già la terza volta che mi imbatto in un problema di accesso in seguito alla pubblicazione di applicazioni Citrix XenApp su Windows Server 2008R2. Dopo la pubblicazione su un portale Web (che sia la Web Interface o altri portali), per alcuni utenti (ma non per tutti) si verifica un errore di accesso quando l’utente lancia l’applicazione. Si tratta di un errore generico di accesso negato, per trovare la soluzione bisogna guardare l’event viewer che indirizza già verso la soluzione e capire perché il problema si verifica.

Il problema è dovuto alla dimensione del token Kerberos che viene generato dal server di pubblicazione dell’applicazione ed è saltuario perché legato in qualche modo al numero di gruppi AD a cui appartiene l’utente. Come dice il testo del Warning se il problema non può essere risolto riducendo il numero di gruppi di appartenenza, si può (ed è consigliabile) aumentare la dimensione del buffer riservato.

In un dominio AD, durante il logon di un utente, la LSA genera un access token per l’utente, contenente un identificatore unico per lo user chiamato SID, che contiene le informazioni essenziali per l’utente nel dominio (tra le quali anche i gruppi di appartenenza) e della macchina a cui l’utente si è collegato. Infatti il token di accesso contiene il SID dell’utente e il SID di tutti i gruppi a cui l’utente appartiene.

The Security System detected an authentication error for the server cifs/XXXXXXXXXXXX.com.
The failure code from authentication protocol Kerberos was "{Buffer Too Small}
The buffer is too small to contain the entry. No information has been written to the buffer.

The kerberos SSPI package generated an output token of size 12339 bytes,
which was too large to fit in the token buffer of size 12000 bytes, provided by process id 4808.

The output SSPI token being too large is probably the result of the user YYY@XXXXXXXXXXXX.com being a
member of a large number of groups. It is recommended to minimize the number of groups a user belongs to. 

If the problem can not be corrected by reduction of the group memberships of this user,
please contact your system administrator to increase the maximum token size, which in term is
configured machine-wide via the following registry value:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\MaxTokenSize.

 

Per default in Windows 2000 il valore MaxTokenSize è di 8.000 bytes ed è stato aumentato in Windows 2000 Service Pack 2 (SP2) e Windows Server 2003 a 12.000 bytes. Nel caso si stia utilizzando un server Windows 2008 questa misura spesso non è sufficiente, quindi si può procedere alla modifica del registry (con le consuete precauzioni) secondo le specifiche sotto indicate. La distribuzione di questa chiave ovviamente può essere (ed è consigliabile che lo sia) effettuata tramite una GPO.
Per applicare le modifiche è richiesto un restart del server.

Creare la chiave REG_DWORD MaxTokenSize sotto il percorso

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

E assegnare come valore 65535 (decimal)

Riferimenti:
http://support.microsoft.com/kb/327825/en-us
http://support.microsoft.com/kb/938118/en-us

Harald


About this entry