[Azure] azData – Token Expired

Falla Turma,

Ontem recebi um e-mail do Rafael Cremonin (de Campo Grande) pedindo ajuda com o erro “Token Expired” que estava ocorrendo quando tentava abrir conexão com o hdfs do Big Data Clusters ou executar algum comando via CLI do Azure.

Conversando com ele, acessamos o ambiente e simulando o erro pude compreender o que estava acontecendo, já tinha passado por isso um tempo atrás. Isso na verdade não se trata de um erro e sim da configuração de autenticação e segurança.

O que é esse Token?

O Azure possui diversas ferramentas para acessar, criar e gerenciar recursos na Cloud, e além do portal padrão, o CLI (Interface de linha de comando) é uma das formas de autenticação mais utilizadas no dia a dia, principalmente para quem precisa gerenciar muitos recursos, sua facilidade de automação é ótima e simplifica muito as tarefas.

Para quem já usou o CLI, após sua instalação o primeiro comando que executa é o famoso:

az login

Quem nunca, acesse esse link para instalar e dar os primeiros passos no Azure 😉
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

Ao executar, o CLI abre o navegador onde você irá realizar a autenticação. É a mesma pagina que você coloca seu usuário e senha ao acessar o portal do Azure.

O que muda, é que via CLI ao executar a autenticação um Token de acesso é gerado automaticamente e esse token passa a ser utilizado nas chamadas de APIRest utilizando o protocolo OAuth passando a informação via authorization no HTTPS.

E por padrão esse token tem via útil entre 45 a 60 min, por isso, o Rafael estava tomando o erro de Token Expired.

Porque ele expira?

Token são criados para estabelecer conexão entre as pontas como ferramenta forte de autenticação segura, definir um tempo de vida útil faz parte da estratégia de segurança.

No caso desse token em especifico, o CLI está no contexto de execução, ou seja, a cada “enter” o CLI checa se o token é valido. Para evitar que a cada comando executado seja necessário colocar usuário e senha, o Token é armazenado em disco local.

Dentro do diretório ~/.azure/ (se fizer um ls ou dir) encontrará diversos arquivos azureProfile.json e accessTokens.json que contém informações sobre o token e também quando ele irá expirar. Bem interessante a nível de curiosidade.

Como resolver isso?

O jeito mais simples? quando ocorrer o erro “Token Expired” ao executar algum comando no CLI… faça o seguinte:

Se autentique novamente (hahah) utilizando o simples comando:

az login

Mas Luiz, terei que fazer isso a cada 60 minutos?

Eu faço, isso garante que sempre estarei dentro das politicas do Azure, evitando algum problema de segurança.

Tá bom, mas existe alguma forma de alterar esse timeout? ou mudar a politica de expiração do Token?

Sim, existe. Toda vez que seu token “vence” A CLI chama um segundo token que é denominado como Update Auth Token, esse carinha é responsável por validar o token atual e solicitar um novo. Ou seja alterando a periodicidade dele, altera o tempo de validade do token.

Existem algumas configurações para isso e politicas que podem ser alteradas para realizar esses ajustes.

Estou preparando um post como continuação desse assunto, pois quero realizar diversos testes e pesquisar mais fundo sobre o assunto, antes de passar qualquer procedimento… longe de mim quebrar o brinquedo de vocês.

Bom pessoal, espero que o conteúdo seja útil e nos vemos no próximo post.

Rafael Cremonin, obrigado pelo e-mail e também pelo bate-papo. aprendemos muito. Sucesso !

Grande abraço
Garetti

Comente sobre isso: