Git

NOME

git-credential - Recupere e armazene as credenciais do usuário

RESUMO

git credential <fill|approve|reject>

DESCRIÇÃO

O Git possui uma interface interna para armazenar e recuperar as credenciais dos ajudantes específicos do sistema, além de solicitar ao usuário os nomes dos usuários e as suas respectivas senhas. O comando git-credential expõe essa interface a scripts que podem recuperar, armazenar ou solicitar credenciais da mesma maneira que o Git. O design dessa interface programável modela ao API C interno; consulte o credential.h para obter mais informações sobre os conceitos.

O git-credential usa uma "ação" como opção na linha de comando (uma das opções fill, aprove ou reject) e lê uma descrição da credencial no "stdin" (consulte INPUT/OUTPUT FORMAT).

Caso a ação seja fill, o comando tentará adicionar os atributos "username" e "password" à descrição lendo os arquivos de configuração ao contactar qualquer auxiliar de credencial configurado ou solicitando ao usuário. Os atributos de nome de usuário e senha da descrição da credencial são impressos para "stdout" junto com os atributos já informados.

Caso a ação for approve (aprovar), o comando git-credential enviará a descrição a todos os auxiliares de credenciais configurados, que poderão armazenar a credencial para uso posterior.

Caso a ação seja reject, o comando git-credential enviará a descrição para qualquer auxiliar de credencial configurado, o que poderá apagar quaisquer credenciais armazenadas que coincidam com a descrição.

Caso a ação seja approve ou reject, nenhum alerta será emitido.

UTILIZAÇÃO TÍPICA DO GIT CREDENTIAL

Um aplicativo que utilize o comando git-credential normalmente usa git credential seguindo estas etapas:

  1. Gere um descritivo da credencial com base no contexto.

    Por exemplo, caso queira uma senha para https://example.com/foo.git, poderemos gerar o seguinte descritivo para a credencial (não se esqueça da linha em branco no final; informa git credential que o aplicativo terminou de encaminhar todas as informações que ele tinha):

    protocol=https
    host=exemplo.com.br
    path=foo.git
  2. Peça à git-credential para nos fornecer um nome de usuário e senha para esta descrição. Isso é feito executando o comando git credential fill, alimentando a descrição da etapa (1) para a sua entrada predefinido. O descritivo completo da credencial (incluindo a credencial em si, ou seja, o login e a senha) será produzida como:

    protocol=https
    host=exemplo.com.br
    username=bob
    password=secr3t

    Na maioria dos casos, isso significa que os atributos informados na entrada serão repetidos na saída, mas o Git também poderá modificar a descrição da credencial, por exemplo, removendo o atributo path quando o protocolo for HTTP(s) e a variável credential.useHttpPath seja falsa.

    Caso o comando git credential saiba sobre a senha, esta etapa pode não ter o envolvimento do usuário que esteja digitando esta senha (o usuário pode ter digitado uma senha para desbloquear o chaveiro ou nenhuma interação do usuário foi feita caso o chaveiro já tenha sido desbloqueado) antes de retornar password=secr3t.

  3. Utilize a credencial (por exemplo, acesse a URL com o nome de usuário e a senha da etapa (2)) e verifique se ela é aceita.

  4. Relate o sucesso ou falha da senha. Caso a credencial permita que a operação seja concluída com sucesso, ela pode ser marcada com uma ação "approve" para passar ao git credential para ser reutilizada na próxima invocação. Caso a credencial seja rejeitada durante a operação, utilize a ação "reject" para que o comando git credential solicite uma nova senha na próxima invocação. Em qualquer um dos casos, o comando git credential deve ser alimentado com o descritivo da credencial obtida na etapa (2) (que também contém aquelas informada na etapa (1)).

FORMATO DE ENTRADA/SAÍDA

O comando git credential lê ou grava (dependendo da ação utilizada) as informações da credencial na sua entrada e saída padrão. Esta informação pode corresponder às chaves pelas quais o comando git credential obterá as informações de login e senha (por exemplo, host, protocolo, caminho) ou aos dados da credencial real a serem obtidos (login e senha).

A credencial é dividida em um conjunto de atributos informados, com um atributo por linha. Cada atributo é especificado por um par de valores-chave, separado por um sinal de = (igual), seguido por uma nova linha.

A chave pode conter quaisquer bytes, exceto =, nova linha ou NUL. O valor pode conter quaisquer bytes, exceto uma nova linha ou NUL.

Nos dois casos, todos os bytes são tratados como estão (ou seja, não há aspas e não é possível transmitir um valor com nova linha ou NUL nela). A lista de atributos é finalizada por uma linha em branco ou no final do arquivo.

O Git entende os seguintes atributos:

protocol

O protocolo sobre o qual a credencial será utilizada (por exemplo, https).

host

O nome do host remoto para uma credencial de rede. Incluí o número da porta caso nenhuma seja informada("example.com:8088" por exemplo).

path

O caminho com o qual a credencial será utilizada. Por exemplo, para acessar um repositório https remoto, este será o caminho do repositório no servidor.

username

O nome de usuário da credencial, caso já tenhamos um (por exemplo, de uma URL, da configuração do usuário ou de um auxiliar executado anteriormente).

password

A senha da credencial, caso estejamos solicitando o seu armazenamento.

url

Quando esse atributo especial é lido através do git credential, o valor é analisado como uma URL e tratado como se as suas partes constituintes fossem lidas (como por exemplo, url=https://example.com se comportaria como se o protocol = https e host=example.com tenham sido fornecidos). Isso pode ajudar quem chama a evitar a análise das URLs eles mesmos.

Observe que a definição de um protocolo é obrigatório e caso a URL não informe o nome do host ("cert:///caminho/para/o/arquivo") o conteúdo da credencial terá o atributo do nome do host cujo valor seja vazio.

Os componentes ausentes na URL (não há um nome de usuário no exemplo acima por exemplo) serão deixados por sem uma definição.