Cos'è ADFS (Active Directory Federation Services)?

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

forte>

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

  2. In cosa differisce da cose come LDAP?

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

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

5;

Ho provato a leggere alcuni dei documenti Technet, ma è pieno di linguaggio Microsoft che non è enormemente utile.

Wikipedia è meglio (vedi sotto), ma forse qualcuno della comunità di ServerFault può colmare alcune delle lacune.

Active Directory Federation Services (ADFS) è un componente software sviluppato da Microsoft che può essere installato sui sistemi operativi Windows Server per fornire agli utenti l'accesso single sign-on a sistemi e applicazioni situati oltre i confini organizzativi. Utilizza un modello di autorizzazione di controllo degli accessi basato sulle richieste per mantenere la sicurezza delle applicazioni e implementare l'identità federata.

L'autenticazione basata sulle richieste è il processo di autenticazione di un utente basato su un insieme di richieste sulla sua identità contenute in un token affidabile.

In ADFS, la federazione di identità è stabilita tra due organizzazioni stabilendo la fiducia tra due regni di sicurezza. Un server di federazione su un lato (il lato Accounts) autentica l'utente attraverso i mezzi standard in Active Directory Domain Services e poi emette un token contenente una serie di affermazioni sull'utente, compresa la sua identità. Dall'altro lato, il lato Risorse, un altro server di federazione convalida il token ed emette un altro token per i server locali per accettare l'identità dichiarata. Questo permette ad un sistema di fornire un accesso controllato alle sue risorse o servizi ad un utente che appartiene ad un altro regno di sicurezza senza richiedere che l'utente si autentichi direttamente al sistema e senza che i due sistemi condividano un database di identità utente o password.

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

  1. L'utente accede al suo PC locale (come tipicamente farebbe quando inizia a lavorare al mattino)
  2. L'utente ha bisogno di ottenere informazioni sul sito extranet di una società partner - per esempio per ottenere i prezzi o i dettagli del prodotto
  3. L'utente naviga verso il sito extranet dell'azienda partner - per esempio: http://example.com
  4. Il sito web del partner ora non richiede alcuna password da digitare - invece, le credenziali dell'utente vengono passate al sito extranet del partner utilizzando AD FS
  5. L'utente è ora loggato nel sito del partner e può interagire con il sito 'loggato'
Soluzione

Per una persona non Microsoft, cos'è ADFS?

ADFS è la soluzione di Microsoft per il Single Sign On e l'autenticazione basata sul web.

Viene utilizzato principalmente per fornire un unico set di credenziali che può accedere a una varietà di siti non necessariamente ospitati all'interno dello stesso dominio.

Come si differenzia da cose come LDAP?

LDAP:

  • Comunica usando TCP/UDP sulla porta 389 (o porta 636 per LDAPS)
  • Contiene comandi per cercare/recuperare/aggiungere/cancellare/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 Apache's mod_authnz_ldap.
  • Quando viene usato per l'autenticazione di siti web di terze parti, richiede che il nome utente e la password siano forniti alla terza parte, il che non è ideale per la sicurezza.
  • È più di uno standard aperto e ha numerose implementazioni per Linux.

ADFS:

  • Meglio progettato per il web in quanto comunica su HTTPS standard
  • Segue un processo più sicuro simile (ma non esatto) a OAuth dove il nome utente/password originali sono forniti direttamente al server ADFS dell'organizzazione (o un proxy, ma non la terza parte), che se valido, restituisce un token unico che può essere utilizzato per accedere a un sito web di terze parti.
  • Sebbene faccia uso di alcuni standard aperti (HTTPS, SAML ecc.) è specifico di Microsoft e richiede Internet Information Services (IIS) che funziona solo su server Windows.

Vedere anche questa risposta sull'argomento.

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

Funziona avendo un singolo sito (sito A) che ospita i server ADFS / ADFS proxy, che ha accesso alle credenziali (di solito comunicando con un Active Directory Domain Controller). Viene poi dato un trust tra altri siti (siti B & C) che richiedono l'autenticazione attraverso l'ADFS.

Quando un utente tenta di accedere al sito B nel suo browser, il sito reindirizza l'utente al sito ADFS-proxy (sito A) che chiede il suo nome utente & password, lo autentica, restituisce un set di cookie per ricordarlo, e lo reindirizza nuovamente al sito B, insieme a un token di accesso.

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

L'ADFS può essere configurato con specifiche richieste (o permessi) per l'utente, per scopi di autorizzazione. Quindi può servire entrambi i ruoli. (Si noti la differenza tra autenticazione e autorizzazione.

Alcune persone preferiscono non usarlo per l'autorizzazione, ma mantenere la gestione dei permessi nel sito web di terze parti. L'ovvio svantaggio è che entrambi i siti A e B devono tenere traccia degli account utente, mentre nello scenario in cui ADFS gestisce entrambi, solo ADFS deve essere a conoscenza degli utenti.

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

Sì, quasi sempre. ADFS è basato sull'idea che sarà usato principalmente per l'autenticazione dei siti web. Ed è costruito intorno a IIS.

Il sito ADFS-proxy è quello che di solito è accessibile da Internet. Tuttavia l'ADFS stesso non lo è. L'ADFS è generalmente un server separato dall'ADFS-proxy.

  • Server ADFS Server che si collega alle credenziali, e che ha la configurazione delle richieste così come i trust. Generalmente non accessibile pubblicamente.
  • Server proxy ADFS** Server che ospita l'istanza IIS che ha le pagine di login per i siti web che richiedono l'autenticazione. Comunica all'ADFS quando si richiede l'autenticazione. Generalmente accessibile pubblicamente.
Commentari (4)