Active Directory: Implementare i Federation Services

Windows Server

Active Directory Federation Services (ADFS) è una feature di Windows Server che permette l’utilizzo del Single Sign-On (SSO) su applicazioni e sistemi esterni alla propria rete. Sebbene stia diventando sempre più comune utilizzare ADFS, sono molto rari gli ambienti funzionanti totalmente sul Cloud. Di solito il termine “sicurezza” complica la creazione di infrastrutture non on-premise, talvolta con cognizione di causa, talvolta no.

In questo articolo vedremo un esempio di configurazione di ADFS su Azure.

Prerequisiti

  • Active Directory
  • Una rete virtuale 192.168.0.0/24
  • Una macchina Web
  • Una macchina ADFS

NB: Tutte le macchine devono già aver effettuato join al dominio.

Procedimento

Dopo essersi collegati alla macchina WEB, installare il ruolo di Web Server e le features ASP.NET 4.5 e Windows Identity Foundation 3.5; per quanto riguarda il ruolo di IIS, selezionare i seguenti componenti:

  • Basic Authentication
  • Windows Authentication
  • Management Service

Installare il pacchetto Windows Identity Foundation SDK, che include una piccola applicazione claims-based, da questo link: http://www.microsoft.com/download/details.aspx?id=4451

Utilizziamo questa opzione solo nel caso in cui non possediamo già un’applicazione claims-based poiché, affinché si possa utilizzare correttamente quella fornita da Microsoft, è necessario effettuare diverse modifiche. Per maggiori informazioni è possibile consultare il link http://technet.microsoft.com/en-us/library/dn280939.aspx#BKMK_9

Dopo aver installato il pacchetto è necessario recuperare l’applicazione Claimapp. Questa si trova sotto: C:\Program Files (x86)\Windows Identity Foundation SDK\v4.0\Samples\Quick Start\Web Application\PassiveRedirectBasedClaimsAwareWebApp; copiare il contenuto della directory all’interno di C:\inetpub\Claimapp

Nella console di Gestione di IIS, cliccare su Application Pool -> DefaultAppPool -> Advanced Settings e configurare il parametro Load User Profile a True, come mostra la figura 1.

2014_03_28_ADFS_01

Figura 1 – Configurazione Avanzata Application Pool

Nella console di Gestione di IIS, cliccare con il tasto destro su Default Web Site ed aggiungere una nuova applicazione, alla quale daremo il nome Claimapp e la agganceremo all’Application Pool di Default, come mostra la figura 2.

2014_03_28_ADFS_02

Figura 2 – Configurazione Claimapp

Installazione Ruolo ADCS

Sulla macchina DC01 installare il ruolo di Active Directory Certificate Services con tutte le impostazioni di default. Al termine dell’installazione sarà richiesto di configurare ADCS.

Assicurarsi che il setup type sia Enterprise CA ed il CA type sia Root CA; lasciare tutte le altre impostazioni di default. Al termine dell’installazione aprire una Console con il comando mmc, aggiungere il template Certificate Template.

Selezionare il template Web Server ed aprire le proprietà, nel tab Security aggiungere il gruppo dei Domain Computer ed abilitate l’enroll tra i permessi, come mostra la figura 3; questo garantirà ai Domain Computer di poter richiedere il certificato.

2014_03_28_ADFS_03

Figura 3 – Configurazione Template

Sulla macchina WEB lanciare una console con il comando mmc, aggiungere lo snap-in Certificate, selezionare Computer Account, selezionando Local Machine Una volta caricato lo snap-ip, selezionare Personal -> Certificates e quindi richiedere un nuovo certificato cliccando con il tasto destro su Certificates -> All Task -> Request New Certificate ed iniziate il wizard; selezionare Web Server e cliccare sul warning More information is required…, che aprirà un’ulteriore finestra dove dovrete inserire all’interno dei campi Subject (Common Name) il valore WEB.AzureLabDomain.local, come mostra la figura 4, e la possibilità di esportare il certificato – figura 5.

2014_03_28_ADFS_04

Figura 4 – Configurazione Certificato

2014_03_28_ADFS_05

Figura 5 – Configurazione Certificato – Chiave Privata

Concludere il wizard e fare l’enroll del certificato.

Installazione Ruolo ADFS

Una volta collegati sulla macchina ADFS, installare il ruolo Active Directory Federation Services con tutte le impostazioni di default.

Prima di lanciare il wizard di configurazione è necessario configurare un certificato per il corretto funzionamento del servizio ADFS. Seguite le stesse indicazioni, oltre che lo stesso template, usate in precedenza, con la differenza che il Common Name sarà sts.AzureLabDomain.local e che saranno necessari anche due Alternative Name di tipo DNS chiamati sts.AzureLabDomain.local e enterpriseregistration.AzureLabDomain.local. Specificare i nomi a livello DNS, ci permette di validare il certificato anche quando viene usato con indirizzi diversi (Subject Alternative Name).

Ultima operazione consiste nell’abilitare i Group Managed Service Accounts e per farlo bisogna utilizzare il seguente cmdlet in PowerShell: Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

Lanciare il wizard dell’ADFS e caricare il certificato appena creato. Nel campo Federation Services Display Name digitare: AzureLabDomain ADFS.

Nella pagina Specify Service Account creare l’utente _adfs: questo utente verrà creato sotto una OU chiamata Managed Services Accounts.

Creare un nuovo Database, che può basarsi sia su Windows Internal Database che su SQL Server, dove però è richiesta una configurazione aggiuntiva ma garantisce performance migliori, oltre che la possibilità di mettere il DB all’interno di un Cluster, e terminare quindi la configurazione. Una volta concluso tutto, collegarsi alla macchina DC ed aprire la console DNS, andando ad aggiungere nuovi record:

A Type – sts.AzureLabDomain.local

CNAME Type – enterpriseregistration.AzureLabDomain.local che punta verso sts.AzureLabDomain.local

All’interno della macchina WEB, aprite la console di IIS e modificate il bindings del Default Web Site, impostando il nuovo certificato SSL, che avete creato in precedenza.

Configurazione ADFS

Loggarsi al server ADFS ed abilitare esplicitamente il server ADFS alle Workplace Domain Join tramite PowerShell, tramite questi cmdlet:

Initialize-ADDeviceRegistration

Username: AzureLabDomain\_adfs$

Enable-AdfsDeviceRegistration

2014_03_28_ADFS_06

Figura 6 – Abilitazione Workplace

Lanciare la console mmc e caricare lo snap-in di ADFS, aprire il nodo ADFS -> Trust Relationship -> Relying Party Trusts e cliccare su Add Relying Party Trust, selezionando a configurazione manuale, come mostra la figura 7.

2014_03_28_ADFS_07

Figura 7 – Configurazioni Relying Party Trust

Nella schermata Specify Display Name, nel campo Display Name, inserire Claimapp; nella schermata Configure Identifiers, nel campo Relying party trust identifier inserire: https://web.AzureLabDomain.local/Claimapp/ e concludere il wizard.

Aggiungere una nuova Custom Rule cliccando su Add Rule e selezionando il template Send Claims Using a Custom Rule. Nel campo Claim Rule Name, inserire All Claims e nel campo Custom Rule inserire:

c:[]

 => issue(claim = c);

2014_03_28_ADFS_08

Figura 8 – Configurazioni Custom Rule

Configurazione FedUtils

Loggarsi sulla macchina WEB e configurate l’utility FedUtils ubicata sotto C:\Program Files (x86)\Windows Identity Foundation SDK\v4.0\. Nel campo Application configuration location inserite il web.config della nostra applicazione, mentre nel campo URI, invece, inseriremo la URL che corrisponde alla nostra applicazione, come mostra la figura 9.

2014_03_28_ADFS_09

Figura 9 – Configurazioni con Federation Utility

Dopo aver cliccato su next, selezioniamo Use an existing STS ed inseriamo https://sts.azurelabdomain.local/; cliccando su Test location possiamo accertarci del corretto funzionamento. Questo completerà la nostra url inserendo il path per raggiungere correttamente l’xml necessario.

Proseguiamo con le configurazioni di default e, prima di cliccare su finish, assicuriamoci che la checkbox Schedule a task to perform daily WS-Federation metadata updates sia selezionata.

Con questa ultima operazione avete costruito la federazione!

Conclusioni

Come si evince da questo articolo, la configurazione di ADFS su Azure è estremamente simile ad una on-premise. Non ci sono grandi differenze se non quelle per le quali si è scelto di utilizzare il cloud. In questo modo la gestione della sicurezza è garantita da Microsoft e, con qualche piccolo accorgimento, è possibile ottimizzare l’accesso alle varie macchine, ad esempio, eliminando gli endpoint non utilizzati sulle macchine.