Che cos'è ADFS (Active Directory Federation Services)?


77

Quindi mi è stato detto che la nostra applicazione PHP potrebbe dover supportare l'autenticazione tramite ADFS.

  1. Per una persona non Microsoft, che cos'è ADFS?

  2. In cosa differisce da cose come LDAP?

  3. Come funziona? Che tipo di informazioni verrebbero incluse in una richiesta tipica a un server ADFS? È progettato sia per l'autenticazione che per l'autorizzazione?

  4. I server ADFS sono in genere accessibili da Internet (mentre i controller di dominio AD aziendali non lo sarebbero)?

Ho provato a leggere alcuni dei documenti Technet, ma è pieno di Microsoft-speak che non è di grande aiuto.

Wikipedia è migliore (vedi sotto), ma forse alcuni membri della comunità ServerFault possono colmare alcune lacune.

Active Directory Federation Services (ADFS) è un componente software sviluppato da Microsoft che può essere installato su sistemi operativi Windows Server per fornire agli utenti l'accesso Single Sign-On a sistemi e applicazioni situati oltre i confini dell'organizzazione. Utilizza un modello di autorizzazione per il controllo degli accessi basato su attestazioni per mantenere la sicurezza dell'applicazione e implementare l'identità federata.

L'autenticazione basata su attestazioni è il processo di autenticazione di un utente basato su una serie di attestazioni sulla sua identità contenuta in un token attendibile.

In ADFS, la federazione delle identità viene stabilita tra due organizzazioni stabilendo la fiducia tra due regni di sicurezza. Un server federativo su un lato (il lato Account) autentica l'utente attraverso i mezzi standard in Servizi di dominio Active Directory e quindi emette un token contenente una serie di attestazioni sull'utente, inclusa la sua identità. Dall'altro lato, il lato Risorse, un altro server federativo convalida il token ed emette un altro token affinché i server locali accettino l'identità rivendicata. Ciò consente a un sistema di fornire un accesso controllato alle proprie risorse o servizi a un utente che appartiene a un altro ambito di sicurezza senza richiedere all'utente di autenticarsi direttamente al sistema e senza che i due sistemi condividano un database di identità utente o password.

In pratica questo approccio è generalmente percepito dall'utente come segue:

  1. L'utente accede al proprio PC locale (come farebbe normalmente quando si inizia a lavorare la mattina)
  2. L'utente deve ottenere informazioni sul sito Web extranet di una società partner, ad esempio per ottenere prezzi o dettagli sul prodotto
  3. L'utente accede al sito extranet della società partner, ad esempio http://example.com
  4. Il sito Web del partner ora non richiede l'inserimento di alcuna password; invece, le credenziali dell'utente vengono passate al sito extranet del partner utilizzando ADFS
  5. L'utente è ora connesso al sito Web del partner e può interagire con il sito Web "connesso"

Da https://en.wikipedia.org/wiki/Active_Directory_Federation_Services


Ho trovato questi articoli e questo video utili per fornire una panoramica.
Simon East,

Reaces ha fornito una risposta eccellente. L'unica informazione aggiuntiva che aggiungerei è che potrebbe essere utile comprendere il protocollo WS-Federation e il Security Assertion Markup Language (SAML), che sono gli standard implementati da ADFS. Ecco alcuni video che ho trovato utili per comprendere questi concetti (piuttosto complessi). Purtroppo contengono così tanto materiale che non posso includerlo qui. ! [Miniatura video Comprensione di SAML e Single Sign-On 101 su YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Miniatura video] (http
Simon East

Ho anche avuto problemi a capire ADFS. Avevo bisogno di una spiegazione fin dall'inizio (non sono una persona AD). Questo video che è incluso nella serie menzionata nei commenti qui, è stato molto utile per me. È qui che dovrebbe iniziare qualsiasi nuova persona con esperienza zero con ADFS e continuare con il resto dei video della serie. Spero possa essere d'aiuto. youtube.com/…
Mauricio Zaragoza,

1
Mi dispiace gente, un moderatore ha eliminato la mia risposta con i video utili e ha reso un commento sopra ma ora è rotto. Frustrante.
Simon East,

Risposte:


98

Per una persona non Microsoft, che cos'è ADFS?

ADFS è la soluzione Microsoft per Single Sign On e autenticazione basata sul web.

Viene utilizzato principalmente per fornire un singolo set di credenziali che possono accedere a una varietà di siti non necessariamente ospitati nello stesso dominio.

In cosa differisce da cose come LDAP?

LDAP:

  • Comunica utilizzando TCP / UDP sulla porta 389 (o porta 636 per LDAPS)
  • Contiene comandi per cercare / recuperare / aggiungere / eliminare / modificare utenti, profili e altre voci della directory
  • Non può essere eseguito direttamente da un browser Web, tuttavia l'autenticazione HTTP può essere tradotta in LDAP usando cose come quelle di Apache mod_authnz_ldap.
  • Se utilizzato per l'autenticazione di siti Web di terzi, richiede che nome utente e password siano forniti a terzi, il che non è l'ideale per la sicurezza.
  • È più di uno standard aperto e ha numerose implementazioni Linux.

ADFS:

  • Progettato meglio per il Web in quanto comunica tramite HTTPS standard
  • Segue un processo più sicuro simile (ma non esatto) a OAuth in cui il nome utente / la password originali vengono forniti direttamente al server ADFS dell'organizzazione (o un proxy, ma non di terze parti), che se valido restituisce un token univoco che può essere utilizzato per accedere a un sito Web di terze parti.
  • Sebbene utilizzi alcuni standard aperti (HTTPS, SAML ecc.) È specifico di Microsoft e richiede Internet Information Services (IIS) che funziona solo su server Windows.

Vedi anche questa risposta sull'argomento.

Come funziona? Che tipo di informazioni verrebbero incluse in una richiesta tipica a un server ADFS? È progettato sia per l'autenticazione che per l'autorizzazione?

Funziona avendo un unico sito (sito A) che ospita i server proxy ADFS / ADFS, che ha accesso alle credenziali (di solito comunicando con un controller di dominio Active Directory). Viene quindi fornito un trust tra altri siti (siti B e C) che richiedono l'autenticazione tramite ADFS.

Quando un utente tenta di accedere al sito B nel proprio browser, il sito reindirizza l'utente al sito Web proxy ADFS (sito A) che richiede nome utente e password, li autentica, restituisce un set di cookie per ricordarli e li reindirizza torna al sito B, insieme a un token di accesso.

Se l'utente tenta quindi di visitare il sito C, verrà anche reindirizzato al sito A per l'autenticazione dal sito Web proxy ADFS. Se esistono i cookie giusti, l'utente non dovrà inserire nuovamente la propria password, ma verrà immediatamente reindirizzato al sito C con un token.

L'ADFS può essere configurato con richieste (o autorizzazioni) specifiche per l'utente, a fini di autorizzazione. Quindi può servire entrambi i ruoli. (Nota la differenza tra autenticazione e autorizzazione .)

Alcune persone preferiscono non utilizzarlo per l'autorizzazione, ma mantengono invece la gestione delle autorizzazioni nel sito Web di terzi. L'ovvio aspetto negativo è che entrambi i siti A e B devono tenere traccia degli account degli utenti, mentre nello scenario in cui ADFS gestisce entrambi, solo ADFS deve essere a conoscenza degli utenti.

I server ADFS sono in genere accessibili da Internet (mentre i controller di dominio AD aziendali non lo sarebbero)?

Sì, quasi sempre. ADFS si basa sull'idea che verrà utilizzato principalmente per l'autenticazione del sito Web. Ed è costruito attorno a IIS.

Il sito proxy ADFS è di solito accessibile da Internet. Tuttavia l'ADFS stesso non lo è. ADFS è generalmente un server separato dal proxy ADFS.

  • Server
    server ADFS che si collega alle credenziali e presenta la configurazione dei reclami e i trust. Generalmente non accessibile al pubblico.
  • Server proxy server ADFS
    che ospita l'istanza IIS con le pagine di accesso per i siti Web che richiedono l'autenticazione. Comunica all'ADFS quando è richiesta l'autenticazione. Generalmente accessibile al pubblico.

11
Per chiarire: ADFS Proxy Server deve essere eseguito su IIS (Windows). Tuttavia, i siti Web client (B&C) possono eseguire qualsiasi sistema operativo e server Web, incluso Linux.
Olli,

Molto utile, ho appena creato un account per sfogliare questo.
Juan,

Espandendo la risposta di @Reaces, ADFS 4.0 su Windows Server 2016 supporta pienamente OAuth / OpenId Connect.
Mohammad Reza Sadreddini,

@MohammadRezaSadreddini Sentiti libero di modificare la risposta per espanderla.
Reagisce il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.