Autenticação¶
O comando imprime uma URL, sobe um listener HTTPS local na porta 9876 e aguarda o redirect. Na primeira vez, emite um certificado em ~/.config/conta-azul-cli/certs/ e instala a CA no trust store do usuário — no macOS isso pode pedir a senha da conta, uma vez. Abra a URL no navegador, complete o login, e os tokens são gravados em ~/.config/conta-azul-cli/tokens.json com permissão 0600.
O arquivo guarda o refresh token, que é a credencial de longa duração. O 0600 vale em Unix; no Windows o PHP não escreve bits de permissão e a proteção fica por conta das ACLs do perfil do usuário — o detalhe está em Permissões dos arquivos.
Refresh é automático e invisível. O access token é renovado preventivamente quando restam menos de 60 s de validade, e reativamente uma única vez em caso de 401. Refresh tokens rotacionam a cada uso e o novo valor é sempre persistido. Invocações concorrentes coordenam via flock() sobre o arquivo de tokens, de modo que apenas uma delas faz o refresh e as demais leem o resultado.
Ambientes headless (CI)¶
Rode ca auth login uma vez numa máquina com navegador, copie o refresh_token do tokens.json e exponha no CI:
Na primeira invocação o CLI detecta a variável, faz o refresh, persiste o resultado em arquivo e segue. Depois desse primeiro arranque a variável pode ser removida.