Autenticazione a più fattori (MFA)
Con Cloud Directory per IBM Cloud® App ID, puoi richiedere molteplici fattori di autenticazione durante il tuo flusso di accesso all'applicazione. Un secondo fattore di autenticazione aumenta la sicurezza dell'applicazione, non solo confermando che l'utente è in possesso delle proprie credenziali, ma anche che ha accesso all'e-mail, al numero di telefono o all'applicazione di autenticazione registrati. Estendendo il flusso MFA, puoi configurare delle estensioni pre-MFA e post-MFA per prendere decisioni personalizzate al runtime in merito a quali utenti devono completare il secondo fattore o fornirti informazioni analitiche sul tuo flusso di accesso.
La MFA App ID è supportata come parte del flusso del codice di autorizzazione OAuth 2.0 per gli utenti Cloud Directory mediante il Widget di accesso. Se stai utilizzando l'accesso aziendale con SAML 2.0 oppure l'accesso social, puoi abilitare la MFA mediante tale provider di identità.
Consulta il seguente diagramma per vedere come funziona il flusso MFA per l'email o SMS.
-
Quando esegue correttamente l'accesso alla tua applicazione, un utente completa il primo fattore di autenticazione. Quindi, in base alla tua configurazione MFA, l'utente riceve una email o un SMS che contiene un codice di 6 cifre.
Quando la MFA è abilitata, il widget di accesso App ID richiede una seconda forma di verifica ogni volta che un utente prova ad eseguire l'accesso, a meno che non sia configurata un'estensione.
-
Si prevede che un utente guardi nel suo telefono o nella sua email per ottenere il codice e che lo immetta quindi nella schermata fornita.
-
Se il codice che immette corrisponde al codice che gli è stato inviato, l'utente viene reindirizzato nuovamente alla tua applicazione ed esegue l'accesso. Se immette il codice in modo errato, il secondo fattore di autenticazione non riesce e l'utente non è in grado di accedere alle tue risorse.
Se la verifica email non è configurata, App ID convalida il canale MFA in background. Ad esempio, se configuri il canale email per la MFA e non configuri la verifica email, App ID convalida l'email al primo accesso MFA eseguito correttamente. Se invece configuri il canale SMS, App ID convalida il numero di telefono dell'utente al primo accesso eseguito correttamente. Se stai utilizzando il canale SMS e desideri che l'email venga convalidata, assicurati di abilitare la verifica dell'email.
Configurazione di un canale email
Puoi configurare App ID per inviare il codice della MFA ai tuoi utenti tramite email.
Quando abiliti la MFA per la prima volta, possono verificarsi queste due cose:
- Per impostazione predefinita, viene selezionato il canale email. Puoi passare al canale SMS.
- App ID registra automaticamente l'email primaria collegata al tuo profilo utente di Cloud Directory.
Se l'email di un utente non è già confermata, tramite le API di gestione o tramite la verifica dell'email quando esegue la registrazione, ne viene eseguita la conferma quando esegue correttamente la verifica di un codice MFA.
La prima volta che viene abilitata, la MFA è configurata per utilizzare l'email per impostazione predefinita. Puoi modificare l'impostazione per utilizzare un SMS ma non puoi configurare entrambi contemporaneamente.
Con la GUI
Puoi configurare il canale email della MFA attraverso la GUI.
-
Passa alla scheda Cloud Directory > Multifactor authentication del dashboard App ID.
-
Nella casella Enable Multifactor authentication, sulla scheda delle impostazioni, imposta MFA su Enabled. Riconosci che comprendi che la MFA comporta un addebito come un evento di sicurezza avanzata. Per impostazione predefinita, Email è selezionato come metodo di autenticazione (Authentication method).
-
Nella scheda Email channel, esamina Email template. Puoi scegliere di inviare il template con il testo fornito oppure di scrivere un tuo messaggio. Assicurati di utilizzare le tag HTML corrette. Nella console è possibile aggiungere parametri e inserire immagini. Per modificare la lingua del messaggio, è possibile utilizzare le API per impostare la lingua. Sei tuttavia responsabile del contenuto e della conversione del messaggio. La tabella seguente mostra l'elenco delle tabelle che è possibile utilizzare in questo messaggio e in tutti gli altri messaggi che è possibile inviare. Se un utente non fornisce le informazioni estratte dal parametro, questi campi saranno vuoti.
Parametri del messaggio MFA Parametro Descrizione %{display.logo}Visualizza l'immagine che hai configurato per il tuo Widget di accesso. %{user.displayName}Visualizza il nome della schermata che un utente ha scelto di utilizzare durante l'interazione con l'applicazione. %{user.email}Visualizza l'indirizzo email registrato dell'utente. %{user.username}Visualizza il nome utente specificato dall'utente quando il metodo di autenticazione è impostato su nome utente e password. %{user.firstName}Visualizza il nome specificato dall'utente. %{user.formattedName}Visualizza il nome completo dell'utente. %{user.lastName}Visualizza il cognome specificato dall'utente. %{mfa.code}Visualizza il codice di verifica MFA monouso. Se un utente non fornisce le informazioni estratte dal parametro, questi campi saranno vuoti.
Con le API
Assicurati di aver i seguenti prerequisiti:
- L'ID tenant della tua istanza App ID. Questo ID può essere trovato nella sezione Service Credentials del dashboard.
- Il tuo token IAM (Identity and Access Management). Per un aiuto nell'ottenimento del token IAM, consulta la Documentazione IAM.
Per abilitare la MFA:
-
Abilita la MFA effettuando una richiesta PUT all'endpoint
/config/cloud_directory/mfacon la tua configurazione MFA per impostareisActivesutrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '"isActive": true' -
Abilitare il canale MFA effettuando una richiesta PUT all'endpoint
/mfa/channels/<channel>con la configurazione MFA. QuandoisActiveè impostato sutrue, il tuo canale MFA è abilitato.$ curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/mfa/channels/email \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '"isActive": true'
Se la tua istanza App ID Cloud Directory è configurata per operare con un mittente email personalizzato, la MFA utilizza lo stesso mittente per inviare il codice monouso. Per ulteriori informazioni, vedi la documentazione di Cloud Directory.
Configurazione di un canale SMS
Puoi inviare un messaggio SMS ai tuoi utenti come una seconda forma di verifica. Quando si abilita l'invio di SMS, App ID tenta automaticamente di registrare il primo numero di telefono primario valido trovato nel profilo di un utente di Cloud Directory. Se il numero non è valido o se non viene trovato alcun numero di telefono nel profilo dell'utente, viene visualizzato un widget di registrazione per consentire all'utente di aggiungere un numero. Il numero fa quindi parte del profilo dell'utente e, dopo la convalida, diventa il numero predefinito utilizzato per la MFA.
Quando viene abilitata inizialmente, la MFA viene impostata per utilizzare l'email per impostazione predefinita. Puoi modificare l'impostazione per utilizzare un SMS ma non puoi configurare entrambi contemporaneamente.
Prima di iniziare
App ID utilizza Vonage (ex Nexmo) per inviare codici MFA SMS una tantum.
-
Ottieni la chiave API e il segreto Vonage. Puoi trovare la chiave API e il segreto Vonage nella pagina delle impostazioni del tuo account sul dashboard Vonage. Per ulteriori informazioni su come ottenere le credenziali, consultare il sito Documentazione Vonage.
-
Registra il tuo ID mittente o il numero
fromcon Vonage. Questo numerofromè quello che appare sul telefono del tuo utente per mostrare da chi proviene l'SMS. In alcuni paesi, Vonage supporta ID mittente alfanumerici.App ID utilizza il valore immesso come ID mittente di Vonage. Quindi, se sono supportati da Vonage, puoi utilizzare gli ID con App ID.
Con la GUI
Per configurare la MFA con la GUI, consulta Cloud Directory.
-
Passa alla scheda Cloud Directory > Multifactor authentication del dashboard App ID.
-
Nella casella Enable multifactor authentication, sulla scheda delle impostazioni, imposta MFA su Enabled. Riconosci che comprendi che la MFA comporta un addebito come un evento di sicurezza avanzata.
-
Seleziona SMS come tuo metodo di autenticazione (Authentication method).
-
Nella scheda SMS channel, configura le informazioni sul tuo account Vonage.
-
Se non hai già un account con Vonage, creane uno.
-
Dal dashboard Vonage, fai clic su SMS.
-
Nella sezione Code it yourself, copia la tua chiave API e incollala nella casella key nel dashboard App ID.
-
Copia il segreto API nel dashboard Vonage e incollalo nella casella Secret sul dashboard App ID.
-
Immettere l'ID da cui si desidera inviare i messaggi. Un formato di numero valido segue il formato di numerazione internazionale E.164. Ad esempio, un numero statunitense assume la forma
+19998887777. Devi specificare sia il prefisso internazionale, che inizia con un simbolo+, che il numero dell'abbonato nazionale. In alcuni paesi, Vonage supporta ID mittente alfanumerici.App ID utilizza il valore immesso come ID mittente di Vonage. Quindi, se sono supportati da Vonage, puoi utilizzare gli ID con App ID.
-
Con le API
Prima di iniziare con l'API, assicurati di avere i seguenti prerequisiti:
- L'ID tenant della tua istanza App ID. Questo ID può essere trovato nella sezione Service Credentials del dashboard.
- Il tuo token IAM (Identity and Access Management). Per un aiuto nell'ottenimento del token IAM, consulta la Documentazione IAM.
-
Abilita la MFA effettuando una richiesta PUT all'endpoint
/config/cloud_directory/mfacon la tua configurazione MFA per impostareisActivesutrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"isActive": true}' -
Abilitare il canale MFA effettuando una richiesta PUT all'endpoint
/mfa/channels/<channel>con la configurazione MFA. QuandoisActiveè impostato sutrue, il tuo canale MFA è abilitato.configprende il segreto e la chiave API Nexmo e il numerofrom.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/mfa/channels/nexmo' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "isActive": true, "config": { "key": "<nexmoKey>", "secret": "<nexmoSecret>", "from": <senderPhoneNumber> } }' -
Dopo che il canale è stato configurato con successo, verificate che la configurazione e la connessione di Nexmo siano state impostate correttamente utilizzando il pulsante di prova sulla console o utilizzando l'API di gestione.
curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/sms_dispatcher/test \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"phone_number": "+1 999 999 9999"}'
Estensione della MFA
Con le estensioni, puoi portare la sicurezza dell'autenticazione multifattore a un livello superiore. Prendendo decisioni personalizzate in merito a chi deve fornire una seconda forma di autenticazione, puoi fornire un'esperienza più personale della tua applicazione per i tuoi utenti. Puoi anche utilizzare le estensioni per controllare le modalità di funzionamento dell'MFA come ad esempio il numero di autenticazioni di seconda forma non riuscite.
Prima di iniziare
Prima di registrare la tua estensione, assicurati di avere i seguenti prerequisiti:
- L'ID tenant della tua istanza App ID. Questo ID può essere trovato nella sezione Applications del dashboard.
- Il tuo token IAM (Identity and Access Management). Per un aiuto nell'ottenimento del token IAM, consulta la Documentazione IAM.
Per ulteriori informazioni sulle restrizioni e limitazioni relative all'uso delle estensioni, vedi Limiti di App ID.
Configurazione di pre-mfa
Con un'estensione pre-mfa, puoi definire i criteri che consentono agli utenti di evitare di dover immettere una seconda forma di autenticazione quando interagiscono con la tua applicazione.
- Quando un utente esegue correttamente l'accesso alla tua applicazione, App ID invia una richiesta POST alla tua estensione.
- La tua estensione utilizza le informazioni dalla richiesta POST per determinare se quello specifico utente può tralasciare il secondo requisito di fattore di autenticazione sulla base dei criteri da te definiti.
- La tua configurazione restituisce una risposta JSON a App ID simile a
{'skipMfa': true}. - In base alla risposta dalla tua configurazione, App ID procede con il flusso MFA oppure concede l'accesso alla tua applicazione.
Per impostazione predefinita, se si verifica un errore durante la richiesta al tuo punto di estensione, App ID richiede che l'utente completi la MFA.
Per configurare un'estensione pre-MFA:
-
Definisci i criteri che vuoi che siano soddisfatti da un utente prima che possa tralasciare il secondo fattore di autenticazione. Se non sei sicuro, consulta i seguenti esempi per avere qualche idea.
Esempi di criteri per saltare l'AMF Caso di utilizzo di esempio Convalida di esempio Vuoi che gli utenti forniscano un secondo fattore di autenticazione solo una volta al giorno. Configurare l'estensione per convalidare il sito last_successful_first_factorentro lo stesso giorno.Avete una lista di utenti approvati che non devono fornire il secondo fattore ogni volta. Configurare l'estensione per verificare che usernameouser_idsia presente nell'elenco dei permessi.Non vuoi che gli utenti che accedono alla tua applicazione su un desktop forniscano il secondo fattore ogni volta. Configurare l'estensione per verificare che device_typesia impostato suweb. -
Quando conosci i tuoi criteri, configura un'estensione che possa restare in ascolto per una richiesta POST. L'endpoint deve essere in grado di leggere il payload che proviene da App ID. Il corpo inviato da App ID prima dell'avvio del flusso MFA è nel formato:
{"jws": "jws-format-string"}. La tua estensione potrebbe anche decodificare e convalidare il payload, il contenuto è un oggetto JSON, e restituire una risposta JSON con il seguente schema:{"skipMfa": Boolean }. Ad esempio:{'skipMfa': true}.Le informazioni che App ID inoltra al punto di estensione. Informazioni Descrizione correlation_idUn numero casuale generato per ogni sessione MFA. Se hai sia un'estensione pre-mfa che un'estensione post-mfa, il numero è lo stesso per entrambe per la stessa sessione. Ad esempio, 3bb9236c-792f-4cca-8ae1-ada754cc4555.extensionIl nome della tua estensione. Per questo caso d'uso, l'estensione si chiama premfa.device_typeIl tipo di dispositivo con cui l'utente accede alla tua applicazione. Le opzioni includono: webemobile.source_ipL'indirizzo IP del dispositivo che effettua la richiesta alla tua applicazione. Ad esempio, 127.0.0.1.headersLe informazioni restituite dal browser quando un utente tenta di accedere alla vostra applicazione. L'intestazione è simile a: {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0"}.tenant_idL'ID tenant della tua applicazione. client_idL'ID client della tua applicazione. user_idL'ID dell'utente che effettua la richiesta di autenticazione. Ad esempio, 11112222-3333-4444-2222-555522226666.usernameIl nome dell'utente che effettua la richiesta di autenticazione. Ad esempio, testuser@email.com.application_typeIl tipo della tua applicazione. Ad esempio, se la tua applicazione è un'applicazione web JavaScript a pagina singola, viene restituito browserapp. Le opzioni includono:browserapp,serverappemobileapp.first_nameIl nome dell'utente. last_nameIl cognome dell'utente. last_successful_first_factorLa data dell'ultima volta in cui l'utente ha inserito correttamente le proprie credenziali. Ad esempio, 1660032586651.last_successful_mfaLa data dell'ultima volta in cui l'utente ha completato l'intero flusso MFA. Ad esempio, 1660032586651.Per vedere un esempio di estensione, consultare l'esempio.
-
Registra la tua estensione con la tua istanza di App ID effettuando una richiesta PUT a
config/cloud_directory/mfa/extensions/premfa. La configurazione include l'URL della tua estensione e le eventuali informazioni di autorizzazione necessarie per accedere all'endpoint. Per scopi di sviluppo,isActiveè impostato sufalse. Assicurati di provare la tua configurazione prima di abilitarla.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/premfa' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "isActive": false, "config": { "url": "<extensionsURL>", "headers": { "Authorization": "<customExtensionAuthorizationHeader>" } } }'Si consiglia vivamente di utilizzare sempre HTTPS anziché HTTP per
extensions_URLper garantire che la tua connessione sia crittografata. -
Dopo che l'estensione è configurata correttamente, verifica che il tuo endpoint funzioni correttamente utilizzando l'API di test. App ID effettua una richiesta POST alla tua estensione configurata con i valori di esempio.
curl -X POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/premfa/test \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' -
Abilita la tua estensione effettuando una richiesta PUT che imposta
isActivesutrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/premfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"isActive": true}'Per disabilitare la tua estensione, imposta
isActivesufalse.
Configurazione di post-mfa
Quando si configura un'estensione e la si registra su App ID, il servizio richiama l'estensione dopo ogni tentativo di autenticazione in cui è presente un secondo fattore di identificazione. Potete utilizzare queste informazioni per prendere decisioni migliori per i vostri utenti. Ad esempio, puoi utilizzare le informazioni della raccolta dell'estensione post-mfa per la tua euristica e le tue regole e implementarle quindi utilizzando l'estensione pre-mfa.
-
Quando un utente esegue correttamente l'accesso alla tua applicazione, gli viene richiesto di immettere il suo secondo fattore di autenticazione.
-
Quando il secondo fattore di autenticazione viene completato correttamente, si verificano simultaneamente due azioni:
-
App ID invia le informazioni sull'accesso alla tua estensione configurata.
-
L'utente viene reindirizzato alla tua applicazione.
-
Per configurare un'estensione post-MFA:
-
Configura un punto di estensione che possa restare in ascolto per una richiesta POST. L'endpoint deve essere in grado di leggere il payload inviato da App ID. Facoltativamente, può anche decodificare e convalidare che il payload JSON restituito da App ID non sia stato alterato da una terza parte in alcun modo. Viene restituita una stringa formattata come
{"jws": "jws-format-string"}che contiene le seguenti informazioni:Le informazioni che App ID inoltra al punto di estensione. Informazioni Descrizione correlation_idUn numero casuale generato per ogni sessione MFA. Se hai sia un'estensione pre-mfa che un'estensione post-mfa, il numero è lo stesso per entrambe. Ad esempio, 3bb9236c-792f-4cca-8ae1-ada754cc4555.extensionIl nome della tua estensione. Per questo caso d'uso, l'estensione si chiama postmfa.statusLo stato della MFA. Le opzioni includono: successefailed.reasonIl motivo per un malfunzionamento della MFA. Ad esempio, user locked out - exceeded maximum number of verification attempts.device_typeIl tipo di dispositivo con cui il tuo utente accede alla tua applicazione. Le opzioni includono: web,mobile.source_ipL'indirizzo IP del dispositivo che effettua la richiesta alla tua applicazione. Ad esempio, 127.0.0.1.headersLe informazioni restituite dal browser quando un utente tenta di accedere alla vostra applicazione. L'intestazione è simile a quella di {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0"}.tenant_idL'ID tenant della tua applicazione. client_idL'ID client della tua applicazione. user_idL'ID dell'utente che effettua la richiesta di autenticazione. usernameIl nome dell'utente che effettua la richiesta di autenticazione. Ad esempio, testuser@email.com.application_typeIl tipo della tua applicazione. Ad esempio, se la tua applicazione è un'applicazione web JavaScript a pagina singola, viene restituito browserapp. Le opzioni includono:browserapp,serverappemobileapp.first_nameIl nome dell'utente. last_nameIl cognome dell'utente. -
Registra la tua estensione con la tua istanza di App ID effettuando una richiesta PUT a
config/cloud_directory/mfa/extensions/postmfa. La configurazione include l'URL della tua estensione e le eventuali informazioni di autorizzazione necessarie per accedere all'endpoint. Per scopi di sviluppo,isActiveè impostato sufalse. Assicurati di provare la tua configurazione prima di abilitarla.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/postmfa' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "isActive": false, "config": { "url": "<extensionsURL>", "headers": { "Authorization": "<customExtensionAuthorizationHeader>" } } }'Si consiglia vivamente di utilizzare sempre HTTPS anziché HTTP per l'extensions_URL per garantire che la tua connessione sia crittografata.
-
Una volta che l'estensione è stata configurata correttamente, verifica che il tuo endpoint funzioni correttamente utilizzando l'API di test. App ID effettua una richiesta POST alla tua estensione configurata con i valori di esempio.
curl -X POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/postmfa/test \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' -
Abilita la tua estensione impostando
isActivesutrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/postmfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"isActive": true}'Per disabilitare la tua estensione, imposta
isActivesufalse.