Como Gerenciar Usuários

Com o Cloud Directory, é possível gerenciar os seus usuários em um registro escalável usando uma funcionalidade pré-construída que aprimora a segurança e o autoatendimento.

Um usuário do Cloud Directory não é a mesma coisa que um usuário do App ID. Os usuários podem se inscrever para o seu app usando as diferentes opções de provedor de identidade que você configurou ou é possível inclui-las em seu diretório. Os usuários que são mencionados nas seções a seguir são os usuários que estão associados ao Cloud Directory como um provedor de identidade.

Visualizando informações sobre o usuário

É possível ver todas as informações conhecidas sobre todos os seus usuários do Cloud Directory como um objeto JSON usando as APIs ou usando o painel.

Exibição de informações do usuário no console

É possível usar o painel do App ID para visualizar detalhes sobre os usuários do app.

  1. Acesse a guia Cloud Directory > Usuários de sua instância do App ID.

  2. Examine a tabela ou procure usando um endereço de e-mail para localizar o usuário do qual você deseja ver as informações. O termo de procura deve ser exato.

  3. No menu overflow na linha do usuário, clique em Visualizar detalhes do usuário. É aberta uma página contendo as informações sobre o usuário. Verifique a tabela a seguir para ver quais informações você pode ver.

    Os detalhes que você pode ver sobre seus usuários no painel App ID
    Detail Descrição
    Identificador de usuários O identificador de usuários é dependente do tipo de inscrição do usuário que você configurou. Por exemplo, se você tiver um fluxo de e-mail e senha, o identificador será o e-mail do usuário. Se você usar o fluxo de nome do usuário e senha, o identificador será o nome do usuário que for dado na inscrição.
    E-mail O endereço de e-mail principal anexado ao usuário.
    Nome e sobrenome O nome e o sobrenome do seu usuário, conforme fornecido por ele durante o processo de inscrição.
    Último login O registro de data e hora da última vez em que o usuário efetuou o login no seu aplicativo. Nota: se você incluiu seu usuário pelo painel, o login ficará em branco até que o próprio usuário se conecte ao seu app. Quando a inscrição ocorre, ele também se torna um usuário do App ID.
    ID O ID designado ao usuário pelo App ID. No console, ele não é exibido, mas você pode copiar o valor e colá-lo em um editor de texto para ver o valor.
    Atributos Predefinidos Atributos predefinidos são coisas conhecidas sobre um usuário com base no SCIM.
    Atributos customizados Atributos customizados são informações adicionais incluídas no perfil ou que são aprendidas sobre os usuários, à medida que eles interagem com seu aplicativo.
    Resumo Todos os atributos são compilados para formar um perfil que dá a você uma visão geral completa do usuário do Cloud Directory. Para obter mais informações, consulte perfis do usuário.

Exibição de informações do usuário com a API

É possível usar a API do App ID para visualizar detalhes sobre os usuários do app.

  1. Obtenha seu ID de locatário em sua instância do serviço.

  2. Procure seus usuários do App ID com uma consulta de identificação, como um endereço de e-mail, para localizar a identificação de usuário.

    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>"
    

    Exemplo:

    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. Usando o ID obtido na etapa anterior, faça uma solicitação GET para o terminal cloud_directory/users para ver seu perfil do usuário inteiro.

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

    Resposta de exemplo:

    {
       "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"
          }
       }
       ]
    }
    

    Para ver o conjunto de dados do usuário completo que o App ID suporta, consulte o esquema principal do SCIM.

Incluindo usuários

Quando um usuário se inscreve em seu aplicativo, ele é incluído como um usuário. Para propósitos de teste, é possível incluir um usuário por meio do painel do App ID ou usando a API.

Quando um usuário se inscreve em seu aplicativo, ele faz isso por meio de um fluxo de trabalho de autoatendimento que aciona automaticamente e-mails, como uma solicitação de boas-vindas ou de verificação. Quando você, como administrador, inclui um usuário em seu app, um fluxo de trabalho de autoatendimento não é iniciado, o que significa que os usuários não recebem nenhum e-mail de seu aplicativo. Se quiser que seus usuários ainda sejam notificados de que foram adicionados, você pode acionar os fluxos de mensagens por meio da API de gerenciamento App ID.

Se você desativar a inscrição de autoatendimento ou incluir um usuário em seu nome, o usuário não receberá um e-mail de boas-vindas ou verificação quando for incluído.

Adição de usuários no console

  1. Acesse a guia Cloud Directory > Usuários do painel do App ID.

  2. Clique em Incluir usuário. Um formulário é aberto.

  3. Insira um Nome, Sobrenome, E-mail e Senha. Certifique-se de que o e-mail que você tenta registrar não esteja já tomado por outro usuário. Para ter certeza de que você digitou a senha corretamente, confirme-a digitando-a no campo Reinserir senha.

  4. Clique em Salvar. Um usuário do Cloud Directory é criado.

Adicionando usuários com a API

  1. Obtenha o seu ID do locatário por meio de suas credenciais de aplicativo ou de serviço.

  2. Obtenha um token do IAM do IBM Cloud.

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. Execute o comando a seguir para criar um novo usuário e um perfil ao mesmo tempo.

    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>\"}"
    

Excluindo usuários

Se quiser remover um usuário do diretório, poderá excluí-lo no console ou usando as APIs.

Exclusão de um único usuário no console

  1. Acesse a guia Cloud Directory > Usuários do painel do App ID.

  2. Clique na caixa de seleção ao lado do usuário que deseja excluir. Uma caixa é aberta.

  3. Na caixa, clique em Excluir. Uma tela é aberta.

  4. Confirme que você entende que a exclusão de um usuário não pode ser desfeita clicando em Excluir. Se a ação for um erro, será possível incluir o usuário em seu diretório novamente, mas qualquer informação sobre esse usuário não estará mais disponível.

Como excluir um único usuário com a API

  1. Obtenha seu ID de locatário.

  2. Obtenha um token do IAM do IBM Cloud.

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. Usando o e-mail anexado ao usuário, procure seu diretório para localizar o ID do usuário.

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users?email=<user@domain.com>" \
    -H "accept: application/json"
    
  4. Exclua o usuário.

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

Como excluir vários usuários com a API

Você também pode excluir usuários de diretório em nuvem e seus perfis correspondentes usando a API de exclusão em massa.

É possível excluir até 100 usuários por solicitação.

  1. Obtenha seu ID de locatário.

  2. Obtenha um token do IAM do IBM Cloud.

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. Exclua os usuários executando o comando a seguir com uma lista de ID do usuário.

    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"
      ]
    }'
    

Migrando usuários

Ocasionalmente, é possível que precise incluir uma instância do App ID. Para ajudar na migração para a nova instância, você pode usar as APIs de exportação e importação para migrações menores. Se estiver migrando um número substancial de usuários (16.000 ou mais), poderá exportar ou importar todos eles com uma única solicitação de API para aumentar sua eficiência.

Deve-se estar designado à função Managerfunção do IAM para ambas as instâncias do App ID.

Exportando todos os usuários. "

Para que seja possível importar seus perfis para sua nova instância, é necessário exportá-los de sua instância original do serviço.

Se você estiver exportando muitos usuários (16.000 ou mais), será possível usar o terminal de API do export/all

  1. Exporte todos os usuários da instância original do serviço.

    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. Obtem o status de seu pedido, conforme necessário.

    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 a exportação estiver pronta ou se a solicitação falhar, um e-mail é enviado para o endereço de e-mail fornecido. Para fazer o download da exportação, use a 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>'
    

    Um arquivo de exportação é criado apenas quando o pedido de exportação é bem-sucedido. Se a solicitação falhar, para reduzir seu risco de vulnerabilidade, os dados que estão reunidos são excluídos. A exportação é excluída automaticamente após 7 dias ou o número de dias especificado no corpo da solicitação (no intervalo de 1 a 30 dias). Você pode optar por excluir manualmente a exportação enviando uma solicitação para a API delete.

    Descrições dos parâmetros que precisam ser fornecidos na solicitação export/all
    Parâmetros Descrição
    encryptionSecret Uma sequência customizada que é usada para criptografar e decriptografar a senha em hash de um usuário. Retenha o segredo de criptografia conforme ele for necessário para usar a API import/all. IBM não armazem o segredo assim se o segredo for perdido, você não pode acessar os dados exportados.
    emailAddress Um endereço de e-mail para o qual um e-mail é enviado quando a exportação está pronta ou se a solicitação falhar.
    expires Um número inteiro que você pode configurar (1 ≤ valor ≤ 30) para especificar o número de dias após o qual a exportação deve ser excluída.. O valor padrão é 7.
    tenantID O ID do locatário de serviço pode ser localizado em suas credenciais de serviço. Você pode encontrar ou criar suas credenciais de serviço no painel App ID.

Exportação de usuários em lotes

O ponto de extremidade de exportação é reservado para pequenas exportações de aproximadamente menos de 16.000 usuários. Para exportar todos os seus usuários do Cloud Directory que estão associados a um ID de inquilino específico, use o terminal de API export/all.

  1. Exporte os usuários de sua instância original do serviço.

    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>'
    
    Descrições dos parâmetros que precisam ser fornecidos na solicitação de exportação
    Parâmetros Descrição
    encryptionSecret Uma sequência customizada que é usada para criptografar e decriptografar a senha em hash de um usuário.
    tenantID O ID do locatário de serviço pode ser localizado em suas credenciais de serviço. É possível localizar suas credenciais de serviço no painel do App ID.

    Somente os usuários do Cloud Directory e seus perfis são retornados. Os usuários de outros provedores de identidade não são.

Importando todos os usuários

Agora que você tem uma lista de usuários exportados do Cloud Directory, é possível importá-los para a nova instância. Você pode usar o endpoint import-all API para importar um número substancial de usuários (16.000 ou mais) com uma única solicitação.

  1. Importe a lista de usuários exportados que você baixou.

    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. Obtem o status de seu pedido, conforme necessário.

    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>'
    
    Descrições dos parâmetros que precisam ser fornecidos na solicitação de importação/todos
    Parâmetros Descrição
    encryptionSecret Uma sequência customizada que é usada para criptografar e decriptografar a senha em hash de um usuário. O segredo de criptografia é o mesmo segredo que você anexou à API export/all. IBM não armazem o segredo assim se o segredo for perdido, você não pode acessar os dados exportados.
    emailAddress Um endereço de e-mail para o qual um e-mail é enviado quando a exportação está pronta ou se a solicitação falhar.
    tenantID O ID do locatário de serviço pode ser localizado em suas credenciais de serviço. Você pode encontrar ou criar suas credenciais de serviço no painel App ID.
    file A saída a partir do terminal export/download.

Importação de usuários em lotes

Você pode usar o endpoint da API de importação para importar alguns usuários de cada vez. Você pode adicionar até apenas 50 usuários por solicitação com o terminal de API de importação. Para adicionar todos os seus usuários através de uma única solicitação, use o terminal de API import/all.

  1. Se seus usuários tiverem funções designadas, certifique-se de criar as funções e os escopos em sua nova instância do App ID.

    As funções e os escopos devem ser criados exatamente como eles estavam na instância anterior com as mesmas ortografias.

  2. Os usuários são importados com um novo identificador do Cloud Directory. Se o seu app referenciar o identificador do Cloud Directory de qualquer maneira, será possível escolher criar um atributo customizado e ajustar o seu aplicativo para chamar o atributo em vez de o identificador diretamente.

  3. Importe os usuários para sua nova instância do serviço.

    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 de migração para pequenas exportações e importações

O App ID fornece um script de migração que você pode usar por meio da CLI que pode ajudar a acelerar o processo de migração ao usar os terminais de API de exportação ou importação. Alternativamente, para tornar o processo de migração ainda mais eficiente, você pode usar os terminais de API export/all e import/all.

  1. Clone o repositório.
git clone https://github.com/ibm-cloud-security/appid-sample-code-snippets/tree/master/export-import-cloud-directory-users.git
  1. No terminal, mude para a pasta na qual você clonou o repositório.

  2. Execute o seguinte comando.

    npm install
    
  3. Com seus parâmetros, execute o comando a seguir.

    users_export_import 'sourceTenantId' 'destinationTenantId' 'region' 'iamToken'
    
    Descrições de parâmetros
    Parâmetro Descrição
    sourceTenantId O ID do locatário da instância do App ID da qual você planeja exportar os usuários.
    destinationTenantId O ID do locatário da instância do App ID para a qual você planeja importar os usuários.
    region Saiba mais sobre as regiões disponíveis.
    IAM token Para obter ajuda ao adquirir um token do IAM, consulte os docs.

    Exemplo de comando:

    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