Como alterar senhas em lote via API Skymail
Neste artigo, explicaremos como realizar a troca de senha de várias contas em lote, utilizando a API da Skymail. Antes de iniciar, é importante que o usuário que executará as ações deste guia atenda aos seguintes pré-requisitos:
- Possuir uma conta ativa no painel de controle da Skymail.
- Ter conhecimento em PowerShell.
- Ter conhecimento em Excel.
Antes de começar, faça o download do arquivo .zip disponível ao final deste guia. Esse arquivo contém dois scripts em PowerShell, que podem ser executados em qualquer máquina Windows, além de dois arquivos Excel em formato .csv com exemplos de como a lista de contas a serem alteradas deve ser estruturada.
Agora, vamos ao processo. Primeiro, abra o PowerShell como Administrador e execute o comando Get-ExecutionPolicy
. Este comando verifica qual é a política de execução de scripts definida no seu PowerShell:
PS C:\Windows\system32> Get-ExecutionPolicy
RemoteSigned
No meu caso, a política de execução está configurada como RemoteSigned. Vamos alterá-la para Bypass para permitir a execução dos scripts. Para isso, execute o comando Set-ExecutionPolicy Bypass
e, quando o PowerShell solicitar uma confirmação, escolha a opção A (Sim para Todos) e pressione Enter:
PS C:\Windows\system32> Set-ExecutionPolicy Bypass
Alteração da Política de Execução
A política de execução ajuda a proteger contra scripts não confiáveis. A alteração da política de execução pode
implicar exposição aos riscos de segurança descritos no tópico da ajuda about_Execution_Policies em
https://go.microsoft.com/fwlink/?LinkID=135170. Deseja alterar a política de execução?
[S] Sim [A] Sim para Todos [N] Não [T] Não para Todos [U] Suspender [?] Ajuda (o padrão é "N"): A
PS C:\Windows\system32>
Pronto, a política foi alterada. Agora, vamos prosseguir. O próximo passo é criar o token privado do usuário no painel. Para isso, utilizaremos o script generate_skymail_api_token.ps1. No PowerShell, executado como Administrador, navegue até o diretório onde o script está localizado e execute-o com o comando: .\generate_skymail_api_token.ps1
.
PS V:\API> .\generate_skymail_api_token.ps1
O script solicitará seu nome de usuário e senha do painel de controle da Skymail. Esses dados serão utilizados para autenticar e gerar o token privado.
Digite seu nome de usuário e senha quando solicitado. O script retornará o primeiro token privado JTI. Copie esse token e armazene-o em um local seguro.
PS V:\API> .\generate_skymail_api_token.ps1
Digite seu usuario: SeuUsuarioDoPainelAqui
Digite sua senha: ********
Seu Token JTI: d2d98068b03f36267624eefad79167b20
PS V:\API>
Agora, acesse o painel de controle da Skymail. Em seguida, clique em Minha Conta e selecione Configurações da Conta, localizado no canto superior direito da tela.
Em seguida, clique em Interface API e copie a chave privada da sua organização. Certifique-se de armazená-la em um local seguro.
O próximo passo é gerar o token de autorização, este passo só deve ser efetuado apenas uma vez, este mesmo token pode ser utilizado sempre que necessário, está atrelado ao usuário do painel que foi utilizado para criá-lo, vai funcionar para sempre desde que o usuário esteja ativo.
Com a chave privada e o primeiro token privado em mãos, acesse o site JWT.IO. Neste site, vamos gerar o token de autorização principal.
- HEADER: Não altere nenhuma configuração nesta seção.
-
PAYLOAD: Insira o token privado gerado anteriormente no PowerShell igual exemplo abaixo.
{
"jti": "substitua pelo token gerado no powershell"
} - VERIFY SIGNATURE: Coloque a chave privada que você copiou do painel no passo anterior.
- Marque a opção secret base64 encoded.
O resultado será exibido na seção Encoded. Este é o token principal de autorização que utilizaremos para as chamadas da API. Copie-o e armazene-o em um local seguro.
Antes de prosseguir, é importante entender as três opções de execução disponíveis no script:
- trocarsenha: O script solicitará uma senha e aplicará essa senha a todas as contas listadas no arquivo.
- trocarsenhadiferente: Para usar esta opção, configure o arquivo como um .csv, com contas na coluna A e senhas na coluna B.
- forcartrocasenha: Esta opção não altera a senha, mas força as contas a trocar a senha no próximo login via Webmail.
Escolha a opção que melhor atende às suas necessidades.
Se optar por trocarsenha, o arquivo .csv deve ser formatado conforme o exemplo a seguir:
Caso a opção trocarsenhadiferente for utilizada, o arquivo .csv deve ser criado seguindo este exemplo:
Se você escolher a opção forcartrocasenha, o arquivo .csv pode ser formatado da mesma forma que o da primeira opção, contendo apenas as contas na coluna A.
Agora, com o token principal de autorização e o arquivo contendo as contas em mãos, vamos prosseguir com a execução.
No PowerShell, navegue até o diretório onde o script está localizado e execute o comando: .\powershell_skymail_api.ps1
.
PS V:\API> .\powershell_skymail_api.ps1
O script solicitará o token de autorização principal e o caminho para o arquivo .csv. O caminho deverá ser absoluto inclusive com a extensão do arquivo, nesse caso .csv.
PS V:\API> .\powershell_skymail_api.ps1
Digite seu token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkMmQ5ODA2OGIwM2YzNjI2NzYyNGVlZmFkNzkxNjdiMjBh
Digite o caminho do CSV: V:\API\trocarsenha.csv
Em seguida, o script perguntará qual opção você deseja utilizar. No exemplo abaixo, vou selecionar a opção trocarsenha.
Qual opcao voce precisa?
[] trocarsenha [] trocarsenhadiferente [] forcartrocasenha [?] Ajuda (o padrão é "trocarsenha"): trocarsenha
Em seguida, o script solicitará a senha que será aplicada a todas as contas. Após inserir a senha e pressionar Enter, o script executará as chamadas na API para alterar as senhas das contas.
Digite a senha que sera setada nas contas: suasenha@12345
Senha alterada para a conta aappii@vini.skydemo.com.br: OK
Senha alterada para a conta bbaa@vini.skydemo.com.br: OK
Senha alterada para a conta eexxtt@vini.skydemo.com.br: OK
Senha alterada para a conta iimm@vini.skydemo.com.br: OK
Senha alterada para a conta sskk@vini.skydemo.com.br: OK
Senha alterada para a conta ppsstt@vini.skydemo.com.br: OK
Solicitacao Finalizada!
PS V:\API>
A senha foi alterada para as 6 contas.
Para garantir a segurança, recomendamos que você reverta a política de execução de scripts do PowerShell para seu valor anterior, que geralmente é Restricted ou RemoteSigned. Para isso, execute o comando: Set-ExecutionPolicy SuaPoliticaAqui
.
PS C:\Windows\system32> Set-ExecutionPolicy Restricted
Alteração da Política de Execução
A política de execução ajuda a proteger contra scripts não confiáveis. A alteração da política de execução pode
implicar exposição aos riscos de segurança descritos no tópico da ajuda about_Execution_Policies em
https://go.microsoft.com/fwlink/?LinkID=135170. Deseja alterar a política de execução?
[S] Sim [A] Sim para Todos [N] Não [T] Não para Todos [U] Suspender [?] Ajuda (o padrão é "N"): A
PS C:\Windows\system32>
Fim!