HELP FILE

Uso do API de provisionamento do LastPass

O LastPass oferece suporte a uma API pública que pode ser usada pelas contas do LastPass Enterprise para criar usuários, cancelar o provisionamento de usuários e gerenciar os grupos. Este API de provisionamento automatizado é muito robusto, mas exige a integração de sua parte para evitar ações duplicadas. Como o LastPass oferece algumas opções de provisionamento automatizadas diferentes, você pode saber mais sobre qual opção é ideal para você.

Tópicos neste artigo:

Adicionar um usuário

Gerar chaves RSA

Adicionar um usuário a uma pasta compartilhada

Adicionar um usuário

A primeira etapa é a adição de um usuário. Você primeiro precisa escolher o número de iterações PBKDF2 que planeja usar. Atualmente o LastPass usa rounds de 100.100 como um padrão para equilibrar a segurança e o desempenho.

Assim que você tiver o nome de usuário, senha e as iterações que planeja usar, você pode primeiro calcular a chave de criptografia do usuário. Ela é grada usando PBKDF2-HMAC-SHA256, usando o nome de usuário como salt. Aqui temos um exemplo usando a função OpenSSL PKCS5_PBKDF2_HMAC() (observe que o nome de usuário e senha devem ser em código UTF-8):

const unsigned char *username = “user@lastpass.com”;

const char *password = “T5O89kkUMGYT”;

int iterations = 5000;

unsigned char key[32];

PKCS5_PBKDF2_HMAC(password, strlen(password), username, strlen(username), iterations, EVP_sha256(), 32, key);

Se a chamada desta função der certo, a chave de criptografia do usuário estará presente na variável “chave”.

Agora que você tem a chave de criptografia do usuário, você pode usá-la para gerar o hash da senha do usuário. Este é o hash passado para o API adduser como parâmetro passwordhash. Aqui um exemplo, continuando o de cima:

unsigned char hash[32];

PKCS5_PBKDF2_HMAC(key, 32, password, strlen(password), 1, EVP_sha256(), 32, hash);

Se a chamada desta função der certo, o hash de senha do usuário estará presente na variável “hash”. Observe que o hash deve passar por uma codificação hexagonal antes de ir para o LastPass. Com isso, passwordhash sempre deve ter 64 caracteres hexadecimais.

Gerar chaves RSA

Para adicionar imediatamente o usuário às pastas compartilhadas, você também deverá passar rsapublickey e rsaprivatekeyenc para o comando adduser.

  1. Gerar um par de chave privada/pública RSA. Esta chave precisa ser de 2048 bits.
  2. Criptografe a chave em formato ASN.1 DER e depois em formato hexadecimal (este é o valor de rsapublickey que será passado para o LastPass). Você pode ver o exemplo de um rsapublickey válido aqui.
  3. Criptografe a chave privada em formato ASN.1 DER e depois em formato hexadecimal (este é o valor de rsaprivatekey que você terá que criptografar com a chave de criptografia do usuário antes de passar para o LastPass). Você pode ver um exemplo de um rsaprivatekey válido aqui.
  4. Criptografe o rsaprivatekey usando a chave de criptografia do usuário:
    1. Anexe “LastPassPrivateKey<” e “>LastPassPrivateKey” ao rsaprivatekey.
    2. Criptografe pelo AES-CBC, usando os primeiros 16 caracteres da chave de criptografia do usuário como IV. Pad via PKCS#7. Criptografe o resultado em hexadecimal para criar rsaprivatekeyenc (que então poderá ser passado para o LastPass).
  5. Quando você tiver o passwordhash, rsapublickey e rsaprivatekeyenc, você deverá estar apto para executar a chamada de API adduser.

Adicionar um usuário a uma pasta compartilhada

Agora que você criou um usuário com chaves RSA válidas, você conseguirá usar a API addusertosharedfolder para adicioná-lo à pasta compartilhada.

  1. Recupere o ID e a chave de criptografia da pasta compartilhada à qual você deseja adicionar o usuário. Você pode visualizar esses valores para as pastas compartilhadas às quais você está atribuído.
  2. A seguir, você precisa criptografar a chave de criptografia da pasta compartilhada com a chave pública RSA do usuário, primeiramente com OAEP. Criptografe o resultado em hexadecimal, o que deve ter 512 bytes hexadecimais já que você está usando uma chave RSA de 2048 bit. O resultado é o que você deve passar para o LastPass como sharekey.
  3. A seguir, você precisa criptografar o nome da pasta compartilhada com a chave de criptografia da pasta compartilhada. Certifique-se de criptografar o nome completo, incluindo o prefixo “Shared-”. Por exemplo, se sua pasta compartilhada tiver o nome de “LP”, criptografe a string como “Shared-LP”. Use AES-ECB para esta etapa, pad via PKCS#7 e criptografe o resultado em base64. O resultado é o que você deve passar para o LastPass como sharename.
  4. Quando você tiver o shareid, sharekey, e sharename, você deverá estar apto para executar a chamada de API addusertosharedfolder.