Gestione di utenti

Con Cloud Directory, puoi gestire i tuoi utenti in un registro scalabile utilizzando una funzionalità predefinita che migliora la sicurezza e il self service.

Un utente Cloud Directory non è la stessa cosa di un utente App ID. Gli utenti possono registrarsi per la tua applicazione utilizzando le diverse opzioni del provider di identità da te configurate oppure puoi aggiungerli alla tua directory. Gli utenti menzionati nelle seguenti sezioni sono gli utenti associati a Cloud Directory come provider di identità.

Visualizzazione delle informazioni utente

È possibile visualizzare tutte le informazioni note su tutti gli utenti di Cloud Directory come oggetto JSON utilizzando le API o la dashboard.

Visualizzazione delle informazioni sull'utente nella console

Puoi utilizzare il dashboard App ID per visualizzare i dettagli sui tuoi utenti dell'applicazione.

  1. Vai alla scheda Cloud Directory > Users della tua istanza App ID.

  2. Sfoglia la tabella o ricerca utilizzando un indirizzo email per trovare l'utente per cui vuoi visualizzare le informazioni. Il termine di ricerca deve essere esatto.

  3. Nel menu di overflow nella riga dell'utente, fai clic su View user details. Si apre una pagina che contiene le informazioni dell'utente. Consulta la seguente tabella per vedere quali informazioni puoi visualizzare.

    I dettagli che si possono vedere sui propri utenti consultando la dashboard App ID
    Dettaglio Descrizione
    Identificativo utente L'identificativo utente dipende dal tipo di registrazione utente che hai configurato. Ad esempio, se hai un flusso di email e password, l'identificativo è l'email dell'utente. Se si utilizza il flusso di nome utente e password, l'identificatore è il nome utente fornito al momento della registrazione.
    Email L'indirizzo email primario collegato all'utente.
    Nome e cognome Nome e cognome dell'utente forniti durante la procedura di registrazione.
    Ultimo accesso Il timestamp dell'ultimo accesso dell'utente all'applicazione. Nota: se hai aggiunto il tuo utente tramite il dashboard, l'accesso è vuoto finché l'utente stesso non accede alla tua applicazione. Quando si verifica l'accesso, diventa anche un utente App ID.
    ID L'ID assegnato all'utente da App ID. Nella console non viene visualizzato, ma è possibile copiare il valore e incollarlo in un editor di testo per vederlo.
    Attributi predefiniti Gli attributi predefiniti sono le cose note su un utente basato su SCIM.
    Attributi personalizzati Gli attributi personalizzati sono ulteriori informazioni che vengono aggiunte al profilo o che vengono apprese sull'utente quando interagisce con la tua applicazione.
    Riepilogo Tutti gli attributi vengono compilati per formare un profilo che fornisce una panoramica completa dell'utente di Cloud Directory. Per ulteriori informazioni, vedi profili utente.

Visualizzazione delle informazioni utente con l'API

Puoi utilizzare l'API App ID per visualizzare i dettagli sui tuoi utenti dell'applicazione.

  1. Ottieni il tuo ID tenant dalla tua istanza del servizio.

  2. Cerca i tuoi utenti App ID con una query di identificazione, ad esempio un indirizzo email, per trovare l'ID utente.

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users?query=<identifyingSearchQuery>" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    

    Esempio:

    curl -X GET https://us-south.appid.cloud.ibm.com/management/v4/e19a2778-3262-4986-8875-8khjafsdkhjsdafkjh/cloud_directory/Users?query=user@domain.com
    -H "accept: application/json"
    -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...."
    
  3. Utilizzando l'ID ottenuto nel passo precedente, effettua una richiesta GET all'endpoint cloud_directory/users per visualizzarne il profilo utente completo.

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    

    Risposta di esempio:

    {
       "sub": "c155c0ff-337a-46d3-a22a-a8f2cca08995",
       "name": "Test User",
       "email": "testuser@test.com",
       "identities": [
       {
          "provider": "cloud_directory",
          "id": "f1772fcc-ff70-4d88-81a0-07dd7a3d988f",
          "idpUserInfo": {
             "displayName": "Test User",
             "active": true,
             "mfaContext": {},
             "emails": [
             {
                "value": "testuser@test.com",
                "primary": true
             }
             ],
             "meta": {
             "lastLogin": "2019-05-20T16:33:20.699Z",
             "created": "2019-05-20T16:25:13.019Z",
             "location": "/v1/6b8ab644-1d4a-4b3e-bcd9-777ba8430a51/Users/f1772fcc-ff70-4d88-81a0-07dd7a3d988f",
             "lastModified": "2019-05-20T16:33:20.707Z",
             "resourceType": "User"
             },
             "schemas": [
             "urn:ietf:params:scim:schemas:core:2.0:User"
             ],
             "name": {
             "givenName": "Test",
             "familyName": "User",
             "formatted": "Test User"
             },
             "id": "f1772fcc-ff70-4d88-81a0-07dd7a3d988f",
             "status": "CONFIRMED",
             "idpType": "cloud_directory"
          }
       }
       ]
    }
    

    Per visualizzare l'insieme di dati completo di un utente supportato da App ID, consulta lo schema standard di SCIM.

Aggiunta di utenti

Quando un utente si registra alla tua applicazione, viene aggiunto come un utente. Per scopi di test, puoi aggiungere un utente mediante il dashboard App ID o utilizzando l'API.

Quando un utente si registra alla tua applicazione, lo fa tramite un flusso di lavoro self service che attiva automaticamente le email come ad esempio il benvenuto e una richiesta di verifica. Quando tu, come amministratore, aggiungi un utente alla tua applicazione, non viene avviato un flusso di lavoro self service, il che significa che gli utenti non ricevono alcuna email dalla tua applicazione. Se si desidera che gli utenti ricevano comunque una notifica di aggiunta, è possibile attivare i flussi di messaggistica tramite l'API di gestione App ID.

Se disabiliti la registrazione self service o aggiungi un utente per suo conto, l'utente non riceve un'email di benvenuto o di verifica quando viene aggiunto.

Aggiunta di utenti nella console

  1. Vai alla scheda Cloud Directory > Users del dashboard App ID.

  2. Fai clic su Add user. Viene aperto un modulo.

  3. Immetti dei valori per First name, Last name, Email e Password. Assicurati che l'email che tenti di registrare non sia già stata presa da un altro utente. Assicurati di avere digitato la tua password correttamente confermandola immettendola nel campo Reenter Password.

  4. Fare clic su Salva. Viene creato un utente Cloud Directory.

Aggiunta di utenti con l'API

  1. Ottieni il tuo ID tenant dalle tue credenziali dell'applicazione o del servizio.

  2. Ottieni un token IAM IBM Cloud.

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. Esegui il seguente comando per creare un nuovo utente e un profilo contemporaneamente.

    curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/sign_up?shouldCreateProfile=true&language=en" \
    -H "accept: application/json" \
    -H "Content-Type: application/json" \
    -H "authorization: Bearer <token>" \
    -d "{ \"active\": true, \"emails\": [ { \"value\": \"<user@domain.com>\", \"primary\": true } ], \"userName\": \"<userName>\", \"password\": \"<userPassword>\"}"
    

Eliminazione di utenti

Se si desidera rimuovere un utente dalla propria directory, è possibile eliminarlo dalla console o utilizzando le API.

Eliminazione di un singolo utente nella console

  1. Vai alla scheda Cloud Directory > Users del dashboard App ID.

  2. Fai clic sulla casella di spunta accanto all'utente che vuoi eliminare. Viene aperta una casella.

  3. Nella casella, fai clic su Delete. Viene aperta una schermata.

  4. Conferma che comprendi che l'eliminazione di un utente non può essere annullata facendo clic su Delete. Se l'azione è stato un errore, puoi aggiungere nuovamente l'utente alla tua directory ma tutte le informazioni su tale utente non saranno più disponibili.

Eliminazione di un singolo utente con l'API

  1. Ottieni il tuo ID tenant.

  2. Ottieni un token IAM IBM Cloud.

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. Utilizzando l'email collegata all'utente, cerca nella tua directory per trovare l'ID dell'utente.

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users?email=<user@domain.com>" \
    -H "accept: application/json"
    
  4. Elimina l'utente.

    curl -X DELETE "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/remove/<userID>" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    

Eliminazione di più utenti con l'API

È anche possibile eliminare in massa gli utenti della directory cloud e i profili corrispondenti utilizzando l'API di eliminazione in massa.

È possibile eliminare fino a 100 utenti per richiesta.

  1. Ottieni il tuo ID tenant.

  2. Ottieni un token IAM IBM Cloud.

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. Elimina gli utenti immettendo il seguente comando con un elenco di ID utente.

    curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/bulk_remove" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    -d '{
    "ids": [
      "fed2634a-7a6c-4f6a-855d-8e3c73a5b5cc",
      "9380158c-19c9-4303-9111-a91743f4bad8"
      ]
    }'
    

Migrazione di utenti

Occasionalmente, potresti aver bisogno di aggiungere un'istanza di App ID. Per facilitare la migrazione alla nuova istanza, è possibile utilizzare le API di esportazione e importazione per le migrazioni minori. Se stai migrando un numero considerevole di utenti (16.000 o più), puoi esportarli tutti o importarli tutti con un'unica richiesta API per migliorare la tua efficienza.

È necessario assegnare il ruolo IAM Manager per entrambe le istanze di App ID.

Esportazione di tutti gli utenti

Prima di poter importare i tuoi profili nella tua nuova istanza, devi esportarli dalla tua istanza originale del servizio.

Se stai esportando molti utenti (16.000 o più), puoi utilizzare l'endpoint API export/all.

  1. Esportare tutti gli utenti dall'istanza originale del servizio.

    curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/all' \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <IAMToken>' \
       --data-raw '{"encryptionSecret" : "<encryptionSecret>",  
    "emailAddress" : "jdoe@example.com"}'
    
  2. Ottieni lo stato della richiesta, se necessario.

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/status?id=<id>' --header 'Accept: application/json' \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <IAMToken>'
    
  3. Quando l'esportazione è pronta o se la richiesta ha esito negativo, viene inviata un'e-mail all'indirizzo email fornito. Per scaricare l'esportazione, utilizzare l'API export/download.

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/download?id=<id>' \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <IAMToken>'
    

    Un file di esportazione viene creato solo quando la richiesta di esportazione ha esito positivo. Se la richiesta non riesce, per ridurre il rischio di vulnerabilità, i dati raccolti vengono eliminati. L'esportazione viene automaticamente eliminata dopo 7 giorni o il numero di giorni specificato nel corpo della richiesta (nell'intervallo compreso tra 1 e 30 giorni). Puoi scegliere di eliminare manualmente l'esportazione inviando una richiesta all'API delete.

    Descrizione dei parametri che devono essere forniti nella richiesta di esportazione/tutela
    Parametri Descrizione
    encryptionSecret Una stringa personalizzata utilizzata per codificare e decodificare una password con hash dell'utente. Mantieni il segreto di crittografia come ti serve per utilizzare l'API import/all. IBM non memorizza il segreto, quindi se il segreto viene perso, non è possibile accedere ai dati esportati.
    emailAddress Un indirizzo email a cui viene inviata un'email quando l'esportazione è pronta o se la richiesta non riesce.
    expires Un numero intero che è possibile impostare (1 ≤ valore ≤ 30) per specificare il numero di giorni dopo i quali l'esportazione deve essere eliminata. Il valore predefinito è 7.
    tenantID L'ID tenant del servizio può essere trovato nelle tue credenziali del servizio. È possibile trovare o creare le credenziali del servizio nella dashboard App ID.

Esportazione di utenti in lotti

L'endpoint di esportazione è riservato alle esportazioni minori di circa 16.000 utenti. Per esportare tutti gli utenti Cloud Directory associati a un ID tenant specifico, utilizza l'endpoint API export/all.

  1. Esporta gli utenti dalla tua istanza originale del servizio.

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export?encryption_secret=mySecret' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer <IAMToken>'
    
    Descrizioni dei parametri che devono essere forniti nella richiesta di esportazione
    Parametri Descrizione
    encryptionSecret Una stringa personalizzata utilizzata per codificare e decodificare una password con hash dell'utente.
    tenantID L'ID tenant del servizio può essere trovato nelle tue credenziali del servizio. Puoi trovare le tue credenziali di servizio nel dashboard App ID.

    Vengono restituiti solo i tuoi utenti Cloud Directory e i loro profili. Gli utenti da altri provider di identità non vengono restituiti.

Importazione di tutti gli utenti

Ora che hai un elenco di utenti Cloud Directory esportati, puoi importarli nella nuova istanza. È possibile utilizzare l'endpoint API import-all per importare un numero considerevole di utenti (16.000 o più) con un'unica richiesta.

  1. Importare l'elenco di utenti esportati scaricati.

    curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import/all' \
    --header 'Content-Type: multipart/form-data' \
    --header 'Authorization: Bearer <IAMToken>' \
    --form 'file=@<User/desktop/myfolder/user_list.json>' \
    --form 'encryptionSecret=mySecret' \
    --form 'emailAddress=jdoe@example.com'
    
  2. Ottieni lo stato della richiesta, se necessario.

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import/status?id=<id>' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <IAMToken>'
    
    Descrizioni dei parametri che devono essere forniti nella richiesta di importazione/tutela
    Parametri Descrizione
    encryptionSecret Una stringa personalizzata utilizzata per codificare e decodificare una password con hash dell'utente. Il segreto di codifica è lo stesso segreto che hai collegato all'API export/all. IBM non memorizza il segreto, quindi se il segreto viene perso, non è possibile accedere ai dati esportati.
    emailAddress Un indirizzo email a cui viene inviata un'email quando l'esportazione è pronta o se la richiesta non riesce.
    tenantID L'ID tenant del servizio può essere trovato nelle tue credenziali del servizio. È possibile trovare o creare le credenziali del servizio nella dashboard App ID.
    file L'output dall'endpoint export/download.

Importazione di utenti in lotti

È possibile utilizzare l'endpoint API di importazione per importare pochi utenti alla volta. Puoi aggiungere fino a 50 utenti per richiesta con l'endpoint API di importazione. Per aggiungere tutti gli utenti tramite una sola richiesta, utilizza l'endpoint API import/all.

  1. Se ai tuoi utenti sono assegnati dei ruoli, assicurati di creare i ruoli e gli ambiti nella tua nuova istanza di App ID.

    I ruoli e gli ambiti devono essere creati esattamente come erano nell'istanza precedente con le stesse grafie.

  2. Gli utenti vengono importati con un nuovo identificativo di Cloud Directory. Se la tua applicazione fa riferimento all'identificativo Cloud Directory in qualsiasi modo, puoi scegliere di creare un attributo personalizzato e regolare la tua applicazione per richiamare l'attributo invece dell'identificativo direttamente.

  3. Importa gli utenti alla tua nuova istanza del servizio.

    curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import?encryption_secret=mySecret'
    --header 'Content-Type: application/json'
    --header 'Accept: application/json'
    --header 'Authorization: Bearer <IAMToken>'
    -d '{"users": [
       {
          "scimUser": {
             "originalId": "3f3f6779-7978-4383-926f-a43aef3b724b",
             "name": {
             "givenName": "John",
             "familyName": "Doe",
             "formatted": "John Doe"
             },
             "displayName": "John Doe",
             "emails": [
             {
                "value": "user@example.com",
                "primary": true
             }
             ],
             "status": "PENDING"
          },
          "displayName": "Jane-Doe",
          "emails": [
             {
             "value": "jdoe@example.com",
             "primary": true
             }
          ],
          "status": "PENDING"
       },
       "passwordHash": "<passwordHashHere>",
       "passwordHashAlg": <passwordHashAlgorithm>,
       "profile": {
          "attributes": {}
       },
       "roles": []
       }
    ]}'
    

Script di migrazione per esportazioni e importazioni minori

App ID fornisce uno script di migrazione che puoi utilizzare tramite la CLI che può aiutare a velocizzare il processo di migrazione quando utilizzi gli endpoint API di esportazione o importazione. In alternativa, per rendere il processo di migrazione ancora più efficace, è possibile utilizzare gli endpoint API export/all e import/all.

  1. Clona il repository.
git clone https://github.com/ibm-cloud-security/appid-sample-code-snippets/tree/master/export-import-cloud-directory-users.git
  1. Nel terminale, passa alla cartella in cui hai clonato il repository.

  2. Immetti il seguente comando.

    npm install
    
  3. Con i tuoi parametri, immetti il seguente comando:

    users_export_import 'sourceTenantId' 'destinationTenantId' 'region' 'iamToken'
    
    Descrizioni dei parametri
    Parametro Descrizione
    sourceTenantId L'ID tenant dell'istanza di App ID da cui vuoi esportare gli utenti.
    destinationTenantId L'ID tenant dell'istanza di App ID in cui vuoi importare gli utenti.
    region Ulteriori informazioni sulle regioni disponibili.
    IAM token Per ottenere un token IAM, consultare i documenti.

    Comando di esempio:

    users_export_import e00a0366-53c5-4fcf-8fef-ab3e66b2ced8 73321c2b-d35a-497a-9845-15c580fdf58c ng eyJraWQiOiIyMDE3MTAyNS0xNjoyNzoxMCIsImFsZyI6IlJTMjU2In0.eyJpYW1faWQiOiJJQk1pZC0zMTAwMDBUNkZTIiwiaWQiOiJJQk1pZC0zMTAwMDBUNkZTIiwicmVhbG1pZCI6IklCTWlkIiwiaWRlbnRpZmllciI6IjMxMDAwIFQ2RlMiPCJnaXZlbl9uYW1lIjoiUm90ZW0iLCJmYW1pbHlfbmFtZSI6IkJyb3NoIiwibmFtZSI6IlJvdGVtIEJyb3NoIiwiZW1haWwiOiJyb3RlbWJyQGlsLmlibS5jb20iLCJzdWIiOiJyb3RlbWJyQGlsLmlibS5jb20iLCJhY2NvdW50Ijp7ImJzcyI6ImQ3OWM5YTk5NjJkYzc2Y2JkMDZlYTVhNzhjMjY0YzE5In0sImlhdCI6MTUzNrE3Mjg4NCwiZXhwIjoxNTM3MTc2NDg0LCJpc3MiOiJodHRwczovL2lhbS5zdGFnZTEuYmx1ZW1peC5uZXQvaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpwYXNzY29kZSIsInNjb3BlIjoiaWJtIG9wZW5pZCIsImNsaWVudF9pZCI6ImJ4IiwiYWNyIjoxLCJhbXIiOlsicHdkIl19.c4vLPzhvvNZLjaLy7znDa37qV4o-yuGmSKmJoQKrEQNZU8IC0NIjxwSo7W9kb0pDi3Yf_03_9ufTTGNfjtltzNWycSXjkNgoL-b9_nU61oHdgn0stY1KmNicqyBWfgUU--4xa904QN_QjRHBaUBeJf3XWEphPIMoF7mZeOxEZLnCMcQXSz9pImCMiP4SNT38cHLiI90Yx01rM7hpteepWULh5MYh-B2V03Gkgxfqvv951HF1LDg6eT4Q9in11laTQKtKuomripUju_4GIIjORVYw9NaAVKIJ9lKrPX0SKPhStsa59qGsC_7Uersms5EY1W1VbZVqOZPJbtp6tVf-Lw