Logo
Stampa questa pagina

Integrated Windows Authentication (SPNEGO) per applicazioni web con Jboss 7 - Parte 2

Jboss application server 7 Jboss application server 7

Per configurare il nostro sistema Single Sign On utilizzando SPNEGO con JBoss dobbiamo prima di ogni altra cosa creare il file keytab. In questo articolo le spiegazioni e i passaggi per arrivare a generare ciò di cui abbiamo bisogno.

Un file keytab è una chiave per un processo di autenticazione, essa permette a un utente o un servizio di loggarsi a Kerberos senza che venga richiesta alcuna password: dentro al keytab ci sono una coppia di "Principals". Nel nostro caso dovremmo creare un Service Principal Name (SPN) che rappresenterà il nostro server JBoss e salvare questo valore nel file keytab. Senza questo passaggio, i client non saranno in grado di trovare il servizio e la nostra applicazione web. Il processo di generazione del file keytab è quello in cui è possibile trovare più problemi rispetto a tutto il resto della configurazione del nostro sistema di autenticazione. Seguiremmo tre steps per i quali è necessario avere appositi diritti nel Dominio Windows:

  1. Creare un accont Utente in Acrive Directory che sarà utilizzato per rappresentare il servizio;
  2. Creare un SPN che servirà ad identificare il servizio;
  3. Generare il file keytab.

Creazione dell'account utente

Utilizzando "Utenti e Computer di Active Directory" creiamo un nuovo Account Utente. E' importante che questo sia un Account Utente e non un Computer o altro oggetto Active Directory; inoltre dobbiamo ricordarci che questo utente non si dovrà mai collegare fisicamente al Dominio Windows. Durante la creazione flaggare le voci che permettono alla password di non scadere mai e che impediscono che essa non venga modificata dall'utente. Se si sta lavorando con un sistema antecedente a Windows 2008 bisognerà entrare nelle proprietà dell'utente, selezionare la tab "Account" e flaggare le voci che indicano di usare la crittazione DES per l'account e di non richiedere la preautenticazione Kerberos. Abbiamo creato per questi esempi un utente "jbossuser" con password "Psw999".

Creazione del Service Principal Name

L'utility setspn permette la manipolazione dei Service Principal. La utilizzeremo per creare un Service Principal per l'utente creato pocanzi. Un Service Principal segue questa sintassi:

classeservizio/host

Visto che l'applicazione web comunica attraverso il protocollo HTTP, la classe del servizio sarà HTTP. L'host è il Fully Qualified Domain Name (FQDN) del server JBoss. Poniamo il caso che il nome di dominio completo per il nostro server sia jbossas.windomain.local . Per creare un Service Principal si utilizza la seguente sintassi:

setspn -a HTTP/host username

Quindi nel nostro caso sul controller di dominio dovremmo eseguire:

setspn -a HTTP/jbossas.windomain.local  jbossuser

L'esecuzione di questo comando non è obbligatoria perchè la prossima utility che useremo (ktpass) lo esegue implicitamente. In ogni caso funziona e possiamo vedere il risultato con:

setspn -L jbossuser

Creazione del file keytab

Infine, useremo l'utility ktpass per creare il file keytab mappando il Service Principal all'Account Utente creato. Questo file sarà poi utilizzato dal server JBoss. Visto che questo passo mi ha creato non pochi problemi data l'ampia gamma di opzioni e le restrittive regole del protocollo Kerberos, posterò direttamente la versione che mi ha permesso di proseguire con successo gli step:

ktpass /princ HTTP/fqdn_host@dominio /pass "" /mapuser dominio\username /out file_keytab /ptype KRB5_NT_PRINCIPAL /kvno 0 /crypto All

Basandoci sui dati detti prima, il nostro comando sarà:

ktpass /princ HTTP/Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. /pass Psw999 /mapuser WINDOMAIN\jbossuser /out C:\jboss.keytab /ptype KRB5_NT_PRINCIPAL /kvno 0 /crypto All

A ktpass possiamo dare anche altri parametri ma per il nostro scopo non sono necessari. Sebbene alcuni dei parametri precedenti non hanno bisogno di spiegazione, per altri è meglio soffermarsi un attimo:

  • ptype - Il tipo di Principal. La maggior parte della documentazione consiglia di utilizzare il parametro così come descritto.
  • kvno - La versione del key number.  Il numero presente dentro il file keytab deve corrispondere con la versione presente nel KDC, ecco perchè la inseriamo manualmente;
  • crypto - Molta documentazione dice di impostare dei parametri precisi come AES128-SHA1 o DES-CBC-CRC in sistemi precedenti a Windows 7. Io qui utilizzo il parametro All che abilita tutte le tipologie.

A questo punto non rimane altro che copiare il file generato dentro al server che ospita JBoss.

Template Design © Joomla Templates | GavickPro. All rights reserved.