Concetti relativi ad AD FS OpenID Connect/OAuth
Si applica ad Active Directory Federation Services (AD FS) 2016 e versioni successive
Attori di autenticazione moderni
Attore | Descrizione |
---|---|
Utente finale | Entità di sicurezza (utenti, applicazioni, servizi e gruppi) che accede alla risorsa. |
Client | L'applicazione Web, identificata dall'ID client. Il client è in genere l'entità con cui l'utente finale interagisce e il client richiede dei token dal server di autorizzazione. |
Server di autorizzazione/provider di identità (IdP) | Server AD FS. È responsabile della verifica dell'identità delle entità di sicurezza presenti nella directory di un'organizzazione. Rilascia i token di sicurezza (token di accesso di connessione, token ID e token di aggiornamento) al termine dell'autenticazione di tali entità di sicurezza. |
Server di risorse/Provider di risorse/Relying party | Posizione in cui risiedono la risorsa o i dati. Considera attendibile il server di autorizzazione per autenticare e autorizzare in modo sicuro il client e usa token di accesso di connessione per garantire che sia possibile concedere l'accesso a una risorsa. |
Il diagramma seguente fornisce la relazione più semplice tra gli attori:
Tipi di applicazione
Tipo di applicazione | Descrizione | Ruolo |
---|---|---|
Applicazione nativa | Talvolta chiamato client pubblico. È destinata a essere un'app client che viene eseguita su un PC o un dispositivo e con cui l'utente interagisce. | Token richieste dal server di autorizzazione (AD FS) per l'accesso utente alle risorse. Invia richieste HTTP alle risorse protette usando i token come intestazioni HTTP. |
Applicazione server (app Web) | Un'applicazione Web eseguita in un server ed è accessibile agli utenti tramite un browser. Poiché è in grado di gestire il proprio segreto client o le proprie credenziali, viene talvolta definito client riservato. | Token richieste dal server di autorizzazione (AD FS) per l'accesso utente alle risorse. Prima di richiedere un token, il client (app Web) deve eseguire l'autenticazione usando il segreto. |
API Web | Risorsa finale a cui l'utente accede. Si consideri la nuova rappresentazione delle relying party. | Utilizza i token di accesso di connessione ottenuti dai client. |
Gruppo di applicazioni
È necessario associare un gruppo di applicazioni a ogni client OAuth nativo o app Web o a una risorsa API Web configurata con AD FS. Configurare i client in un gruppo di applicazioni per accedere alle risorse nello stesso gruppo. Un gruppo di applicazioni può avere più client e risorse.
Token di sicurezza
L'autenticazione moderna usa i seguenti tipi di token:
- id_token: token JWT rilasciato dal server di autorizzazione (AD FS) e utilizzato dal client. Le attestazioni nel token ID contengono informazioni sull'utente in modo che il client possa usarlo.
- access_token: token JWT rilasciato dal server di autorizzazione (AD FS) e destinato a essere utilizzato dalla risorsa. L'attestazione 'aud' o audience di questo token deve corrispondere all'identificatore della risorsa o dell'API Web.
- refresh_token: rilasciato da AD FS per il client da usare quando deve aggiornare il id_token e access_token. Il token è opaco per il client e utilizzato solo da AD FS.
Durata dei token di aggiornamento
- Accesso semplice, senza KMSI, dispositivo non registrato: AD FS applica
SsoLifetime
eDeviceUsageWindowInDays
. Il primo token di aggiornamento halifetime=DeviceUsageWindowInDays
oSsoLifetime
, in base al campo inferiore ma non vengono rilasciati altri token di aggiornamento. - Accesso KMSI,
EnableKmsi=true
in AD FS conf ekmsi=true
passati come parametro: AD FS applicaKmsiLifetimeMins
conDeviceUsageWindowInDays
. Il primo token di aggiornamento halifetime=DeviceUsageWindowInDays
e ogni richiesta digrant_type=refresh_token
successiva ottiene un nuovo token di aggiornamento. Questo processo avviene solo con client nativi o client riservati e l'autenticazione del dispositivo. - Dispositivi registrati, autenticazione del dispositivo: AD FS usa
PersistentSsoLifetimeMins
eDeviceUsageWindowInDays
simili a KMSI. I client nativi e riservati devono ottenere nuovi token di aggiornamento, in base all'autenticazione del dispositivo.
Per altre informazioni, vedere la documentazione sull'accesso Single Sign-On di AD FS.
Ambiti
Quando si registra una risorsa in AD FS, è possibile configurare gli ambiti per consentire ad AD FS di eseguire azioni specifiche. Oltre a configurare l'ambito, è necessario inviare il valore di ambito nella richiesta di AD FS per eseguire l'azione. Ad esempio, un amministratore configura l'ambito come openid
durante la registrazione delle risorse e l'applicazione (client) deve inviare scope = openid
nella richiesta di autenticazione per AD FS per rilasciare il token ID. Di seguito sono riportati i dettagli sugli ambiti disponibili in AD FS:
aza
- Se si usano le estensioni del protocollo OAuth 2.0 per i client broker e se il parametro di ambito contiene l'ambitoaza
, il server rilascia un nuovo token di aggiornamento primario. Imposta il token nel camporefresh_token
della risposta e impostarefresh_token_expires_in field
sulla durata del nuovo token di aggiornamento primario, se ne viene applicata una.openid
: consente all'applicazione di richiedere l'uso del protocollo di autenticazione di connessioneopenid
.logon_cert
- Consente a un'applicazione di richiedere certificati di accesso che è possibile usare per accedere in modo interattivo agli utenti autenticati. Il server AD FS omette il parametroaccess_token
dalla risposta e fornisce invece una catena di certificati CMS con codifica Base64 o una risposta PKI completa CMC. Per altre informazioni, vedere MS-OAPX: estensioni del protocollo OAuth 2.0.user_impersonation
- Richiede un token di accesso on-behalf-of da AD FS. Per informazioni dettagliate su come usare questo ambito, vedere Creare un'applicazione multilivello usando On-Behalf-Of (OBO) usando OAuth con AD FS 2016.allatclaims
- Consente all'applicazione di richiedere anche le attestazioni nel token di accesso da aggiungere al token ID.vpn_cert
- Consente a un'applicazione di richiedere certificati VPN, che stabiliscono connessioni VPN usando l'autenticazione EAP-TLS. Questa funzionalità non è più supportata.email
- Consente all'applicazione di richiedere un'attestazione di posta elettronica per l'utente connesso.profile
- Consente all'applicazione di richiedere attestazioni correlate al profilo per l'utente connesso.
Richieste di rimborso
I token di sicurezza (token di accesso e ID) emessi da AD FS contengono attestazioni o asserzioni di informazioni sull'oggetto autenticato. Le applicazioni possono usare le attestazioni per varie attività, tra cui:
- Convalidare il token
- Identificare il tenant di directory dell'oggetto
- Visualizzare le informazioni utente
- Determinare l'autorizzazione dell'oggetto
Le attestazioni presenti in un determinato token di sicurezza dipendono dal tipo di token, dal tipo di credenziali usate per autenticare l'utente e dalla configurazione dell'applicazione.
Flusso di autenticazione di AD FS di alto livello
Di seguito è riportato un diagramma del flusso generale.
AD FS riceve la richiesta di autenticazione dal client.
AD FS convalida l'ID client nella richiesta di autenticazione con l'ID client ottenuto durante la registrazione del client e della risorsa in AD FS. Se si usa il client riservato, AD FS convalida anche il segreto client fornito nella richiesta di autenticazione. AD FS convalida anche l'URI di reindirizzamento del client.
AD FS identifica la risorsa a cui il client vuole accedere tramite il parametro della risorsa passato nella richiesta di autenticazione. Se si usa la libreria client MSAL, il parametro della risorsa non viene inviato. L'URL della risorsa viene invece inviato come parte del parametro scope: scope = [url risorsa]/[valori di ambito, ad esempio openid].
Se la risorsa non viene passata usando i parametri della risorsa o dell'ambito, AD FS usa una risorsa predefinita
urn:microsoft:userinfo
i cui criteri, ad esempio, MFA, rilascio o criteri di autorizzazione, non possono essere configurati.Ad FS verifica quindi se il client dispone delle autorizzazioni per accedere alla risorsa. AD FS convalida anche se gli ambiti passati nella richiesta di autenticazione corrispondono agli ambiti configurati durante la registrazione della risorsa. Se il client non dispone delle autorizzazioni o gli ambiti corretti non vengono inviati nella richiesta di autenticazione, il flusso di autenticazione termina.
Dopo aver convalidato le autorizzazioni e gli ambiti, AD FS autentica l'utente usando il metodo di autenticazione configurato.
Se è necessario un altro metodo di autenticazione in base ai criteri di risorsa o ai criteri di autenticazione globali, AD FS attiva l'autenticazione aggiuntiva.
AD FS utilizza l'autenticazione a più fattori di Microsoft Entra o l'autenticazione a più fattori di terze parti per eseguire l'autenticazione.
Dopo l'autenticazione dell'utente, AD FS applica le regole di attestazione. Le regole di attestazione determinano le attestazioni inviate alla risorsa come parte dei token di sicurezza. AD FS applica anche i criteri di controllo di accesso che confermano che l'utente soddisfa le condizioni necessarie per accedere alla risorsa.
AD FS genera quindi l'accesso e aggiorna i token. AD FS genera anche il token ID.
AD FS riceve la richiesta di autenticazione.
Se si include
scope = allatclaims
nella richiesta di autenticazione, il token ID viene personalizzato in modo da includere le attestazioni nel token di accesso in base alle regole di attestazione definite.Dopo aver generato e personalizzato i token necessari, AD FS risponde al client e include i token. La risposta del token ID è inclusa nella risposta solo se la richiesta di autenticazione include
scope = openid
. Il client può sempre ottenere il token ID dopo l'autenticazione usando l'endpoint del token.
Tipi di librerie
Usare due tipi di librerie con AD FS:
Librerie client: i client nativi e le app server usano librerie client per ottenere i token di accesso per chiamare una risorsa, ad esempio un'API Web. Microsoft Authentication Library (MSAL) è la libreria client più recente e consigliata quando si usa AD FS 2019.
Librerie middleware server: le app Web usano librerie middleware server per l'accesso degli utenti. Le API Web usano librerie middleware server per convalidare i token inviati da client nativi o da altri server. Open Web Interface for .NET (OWIN) è la libreria middleware consigliata.
Personalizzare il token ID (attestazioni aggiuntive nel token ID)
In alcuni scenari, è possibile che il client dell'app Web richieda attestazioni aggiuntive in un token ID per facilitare la funzionalità. Configurare attestazioni aggiuntive in un token ID usando una delle opzioni seguenti:
Opzione 1: usare questa opzione quando si dispone di un client pubblico e l'app Web non dispone di una risorsa a cui sta provando ad accedere. Questa opzione richiede:
response_mode
è impostato comeform_post
- L'identificatore della relying party (identificatore API Web) corrisponde all'identificatore client
Opzione 2: usare questa opzione quando l'app Web ha una risorsa a cui sta tentando di accedere e deve passare attestazioni aggiuntive tramite il token ID. È possibile usare client pubblici e riservati. Questa opzione richiede:
response_mode
è impostato comeform_post
KB4019472 è installato nei server AD FS
L'ambito
allatclaims
viene assegnato alla coppia client - RP. È possibile assegnare l'ambito usandoGrant-ADFSApplicationPermission
. UsareSet-AdfsApplicationPermission
se è già stato concesso una volta. Il cmdlet di PowerShell è indicato nell'esempio seguente:Grant-AdfsApplicationPermission -ClientRoleIdentifier "https://my/privateclient" -ServerRoleIdentifier "https://rp/fedpassive" -ScopeNames "allatclaims","openid"
Per comprendere meglio come configurare un'app Web in AD FS per ottenere un token ID personalizzato, vedere Token ID personalizzati in AD FS 2016 o versione successiva.
Disconnessione singola
La singola disconnessione termina tutte le sessioni client che usano l'ID sessione. AD FS 2016 e versioni successive supportano una singola disconnessione per OpenID Connect/OAuth. Per altre informazioni, vedere Disconnessione singola per OpenID Connect con AD FS.
Endpoint AD FS
AD FS Endpoint | Descrizione |
---|---|
/authorize | AD FS restituisce un codice di autorizzazione che è possibile usare per ottenere il token di accesso. |
/token | AD FS restituisce un token di accesso che è possibile usare per accedere alla risorsa, come nell'API Web. |
/userinfo | AD FS restituisce l'attestazione dell'oggetto. |
/devicecode | AD FS restituisce il codice del dispositivo e il codice utente. |
/logout | AD FS disconnette l'utente. |
/keys | Chiavi pubbliche di AD FS usate per firmare le risposte. |
/.well-known/openid-configuration | AD FS restituisce i metadati OAuth/OpenID Connect. |