Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.46.1 → 2.47.1 no changes
- 2.46.0 07/29/24
- 2.43.1 → 2.45.2 no changes
- 2.43.0 11/20/23
- 2.42.1 → 2.42.3 no changes
- 2.42.0 08/21/23
- 2.41.1 → 2.41.2 no changes
- 2.41.0 06/01/23
- 2.40.1 → 2.40.3 no changes
- 2.40.0 03/12/23
- 2.39.1 → 2.39.5 no changes
- 2.39.0 12/12/22
- 2.35.1 → 2.38.5 no changes
- 2.35.0 01/24/22
- 2.32.1 → 2.34.8 no changes
- 2.32.0 06/06/21
- 2.27.1 → 2.31.8 no changes
- 2.27.0 06/01/20
- 2.25.1 → 2.26.3 no changes
- 2.25.0 01/13/20
- 2.1.4 → 2.24.4 no changes
- 2.0.5 12/17/14
DESCRIPTION
Git possède une interface interne pour stocker et récupérer les informations d’identification à partir d’assistants spécifiques au système, ainsi que pour demander à l’utilisateur des noms d’utilisateur et des mots de passe. La commande git-credential expose cette interface aux scripts qui peuvent vouloir récupérer, stocker ou demander des informations d’identification de la même manière que Git. La conception de cette interface scriptable modélise l’API C interne ; voir credential.h pour plus de détails sur les concepts.
git-credential prend une option "action" sur la ligne de commande (une parmi fill
, approve
, ou reject
) et lit une description de credential sur stdin (voir FORMAT D’ENTRÉE/SORTIE).
Si l’action est fill
, git-credential tentera d’ajouter les attributs "username" et "password" à la description en lisant les fichiers de configuration, en contactant les assistants d’authentification configurés, ou en demandant à l’utilisateur. Les attributs "username" et "password" de la description de l’authentification sont ensuite imprimés sur stdout avec les attributs déjà fournis.
Si l’action est approve
, git-credential enverra la description à tout assistant d’accréditation configuré, qui peut stocker l’accréditation pour une utilisation ultérieure.
Si l’action est reject
, git-credential enverra la description à tous les assistants d’authentification configurés, qui peuvent effacer toutes les authentifications stockées correspondant à la description.
Si l’action est capability
, git-credential annoncera toutes les capacités qu’il prend en charge pour la sortie standard.
Si l’action est approve
ou reject
, aucune sortie ne doit être émise.
UTILISATION TYPIQUE DE L’AUTHENTIFICATION GIT
Une application utilisant git-credential utilisera typiquement git credential
en suivant ces étapes :
-
Générer une description d’authentification basée sur le contexte.
Par exemple, si nous voulons un mot de passe pour
https://example.com/foo.git
, nous pourrions générer la description d’authentification suivante (n’oubliez pas la ligne blanche à la fin ; elle indique àgit credential
que l’application a fini de fournir toutes les informations dont elle dispose) :protocol=https host=example.com path=foo.git
-
Demander à git-credential de nous donner un nom d’utilisateur et un mot de passe pour cette description. Ceci est fait en exécutant
git credential fill
, en fournissant la description de l’étape (1) à son entrée standard. La description complète des identifiants (incluant l’identification elle-même, c’est-à-dire le nom d’utilisateur et le mot de passe) sera produite sur la sortie standard, comme :protocol=https host=example.com username=bob password=secr3t
Dans la plupart des cas, cela signifie que les attributs donnés en entrée seront répétés en sortie, mais Git peut aussi modifier la description des identifiants, par exemple en supprimant l’attribut
path
lorsque le protocole est HTTP(s) et quecredential.useHttpPath
est faux.Si le
git credential
connaissait le mot de passe, cette étape peut ne pas avoir impliqué que l’utilisateur tape réellement ce mot de passe (l’utilisateur peut avoir tapé un mot de passe pour déverrouiller le trousseau à la place, ou aucune interaction de l’utilisateur n’a été faite si le trousseau était déjà déverrouillé) avant de retournerpassword=secr3t
. -
Utiliser le justificatif d’identité (par exemple, accéder à l’URL avec le nom d’utilisateur et le mot de passe de l’étape (2)), et voir s’il est accepté.
-
Rapporter sur le succès ou l’échec du mot de passe. Si l’identifiant a permis à l’opération de se terminer avec succès, il peut être marqué avec une action "approve" pour dire à
git credential
de le réutiliser dans sa prochaine invocation. Si l’identifiant a été rejeté pendant l’opération, utiliser l’action "reject" pour quegit credential
demande un nouveau mot de passe lors de sa prochaine invocation. Dans les deux cas,git credential
doit être alimenté avec la description de l’identifiant obtenue à l’étape (2) (qui contient également les champs fournis à l’étape (1)).
FORMAT D’ENTRÉE/SORTIE
git credential
lit et/ou écrit (en fonction de l’action utilisée) des informations d’identification dans son entrée/sortie standard. Ces informations peuvent correspondre soit à des clés pour lesquelles git credential
obtiendra les informations de connexion (par exemple, hôte, protocole, chemin), soit aux données d’identification réelles à obtenir (nom d’utilisateur/mot de passe).
L’identifiant est divisé en un ensemble d’attributs nommés, avec un attribut par ligne. Chaque attribut est spécifié par une paire clé-valeur, séparée par un signe =
(égal), suivi d’une nouvelle ligne.
La clé peut contenir n’importe quel octet sauf =
, newline ou NUL. La valeur peut contenir n’importe quel octet, à l’exception de newline ou NUL. Une ligne, y compris la nouvelle ligne, ne peut dépasser 65535 octets afin de permettre aux implémentations de les analyser efficacement.
Les attributs dont les clés se terminent par des parenthèses de style tableau C []
peuvent avoir plusieurs valeurs. Chaque instance d’un attribut multi-valué forme une liste ordonnée de valeurs - l’ordre des attributs répétés définit l’ordre des valeurs. Un attribut multivalué vide (clé[]=\n
) efface toutes les entrées précédentes et réinitialise la liste.
Dans tous les cas, tous les octets sont traités tels quels (c’est-à-dire qu’il n’y a pas de guillemets et qu’on ne peut pas transmettre une valeur contenant une nouvelle ligne ou NUL). La liste des attributs se termine par une ligne blanche ou une fin de fichier.
Git comprend les attributs suivants :
-
protocol
-
Le protocole sur lequel l’identifiant sera utilisé (par exemple,
https
). -
host
-
Le nom d’hôte distant pour un identifiant réseau. Cela inclut le numéro de port s’il a été spécifié (par exemple, "exemple.com:8088").
-
path
-
Le chemin avec lequel l’identifiant sera utilisé. Par exemple, pour accéder à un dépôt https distant, ce sera le chemin du dépôt sur le serveur.
-
username
-
Le nom d’utilisateur de l’identifiant, si nous en avons déjà un (par exemple, à partir d’une URL, de la configuration, de l’utilisateur ou d’une aide précédemment exécutée).
-
password
-
Le mot de passe de l’identifiant, si nous demandons qu’il soit stocké.
-
password_expiry_utc
-
Les mots de passe générés tels que les jetons d’accès OAuth peuvent avoir une date d’expiration. Lors de la lecture des informations d’identification depuis les assistants,
git credential fill
ignore les mots de passe expirés. Représenté en temps Unix UTC, en secondes depuis 1970. -
oauth_refresh_token
-
Un jeton de rafraîchissement OAuth peut accompagner un mot de passe qui est un jeton d’accès OAuth. Les assistants doivent traiter cet attribut comme confidentiel, au même titre que l’attribut password. Git lui-même n’a pas de comportement particulier pour cet attribut.
-
url
-
Lorsque cet attribut spécial est lu par
git credential
, la valeur est analysée comme une URL et traitée comme si ses parties constitutives étaient lues (par exemple,url=https://example.com
se comporterait comme siprotocol=https
ethost=example.com
avaient été fournis). Cela peut aider les appelants à éviter d’analyser eux-mêmes les URL.Notez que la spécification d’un protocole est obligatoire et que si l’URL ne spécifie pas de nom d’hôte (par exemple, "cert:///chemin/vers/un/fichier"), l’identifiant contiendra un attribut de nom d’hôte dont la valeur est une chaîne vide.
Les composants qui manquent dans l’URL (par exemple, il n’y a pas de nom d’utilisateur dans l’exemple ci-dessus) ne seront pas définis.
-
authtype
-
Cela indique que le système d’authentification en question devrait être utilisé. Les valeurs communes pour HTTP et HTTPS comprennent
basic
,bearer
, anddigest
, bien que cette dernière ne devrait pas être utilisée. Sicredential
est utilisé, cela peut être réglé à une chaîne arbitraire adaptée au protocole en question (généralement HTTP).Cette valeur ne doit pas être envoyée à moins que la capacité appropriée (voir ci-dessous) ne soit fournie en entrée.
-
credential
-
Le credential pré-encodé, adapté au protocole en question (généralement HTTP). Si cette clé est envoyée,
authtype
est obligatoire, etutilisateur
etmot-de-passe
ne sont pas utilisés. Pour HTTP, Git concatène la valeurtype-auth
et cette valeur avec un seul espace pour déterminer l’en-têteAuthorization
.Cette valeur ne doit pas être envoyée à moins que la capacité appropriée (voir ci-dessous) ne soit fournie en entrée.
-
ephemeral
-
Cette valeur booléenne indique, si elle est à
true
, que la valeur dans le champcredential
ne devrait pas être sauvegardée par l’assistant d’accréditation parce que son utilité est limitée dans le temps. Par exemple, une valeurcredential
HTTP Digest est calculée à l’aide d’une nonce et la réutiliser n’aboutira pas à une authentification réussie. Cela peut également être utilisé pour des situations de courte durée (p. ex., 24 heures). La valeur par défaut estfalse
.L’assistant d’accréditation sera toujours invoqué avec
store
ouerase
afin qu’il puisse déterminer si l’opération a réussi.Cette valeur ne doit pas être envoyée à moins que la capacité appropriée (voir ci-dessous) ne soit fournie en entrée.
-
state[]
-
Cette valeur fournit un état opaque qui sera transmis à cet assistant s’il est de nouveau appelé. Chaque assistant différent peut spécifier ceci une fois. La valeur devrait inclure un préfixe unique à l’assistant d’accréditation et il devrait ignorer les valeurs qui ne correspondent pas à son préfixe.
Cette valeur ne doit pas être envoyée à moins que la capacité appropriée (voir ci-dessous) ne soit fournie en entrée.
-
continue
-
C’est une valeur booléenne qui, si elle est activée, indique que cette authentification est une partie non finale d’une étape d’authentification multi-étape. Ceci est courant dans les protocoles tels que NTLM et Kerberos, où deux séries d’authentification client sont nécessaires, et le réglage de ce drapeau permet à l’assistant d’accréditation de mettre en œuvre l’étape d’authentification multi-étape. Ce drapeau ne doit être envoyé que si une autre étape est nécessaire ; c’est-à-dire si une autre série d’authentification est prévue.
Cette valeur ne doit pas être envoyée à moins que la capacité appropriée (voir ci-dessous) ne soit fournie en entrée. Cet attribut est à sens unique depuis l’assistant d’accréditation pour transmettre de l’information à Git (ou à d’autres programmes invoquant
git credential
). -
wwwauth[]
-
Lorsque Git reçoit une réponse HTTP contenant un ou plusieurs en-têtes d’authentification "WWW-Authenticate", ceux-ci sont transmis par Git aux assistants d’authentification.
Chaque valeur de l’en-tête "WWW-Authenticate" est transmise sous la forme d’un attribut à valeurs multiples "wwwauth[]", l’ordre des attributs étant le même que celui dans lequel ils apparaissent dans la réponse HTTP. Cet attribut est "à sens unique" à partir de Git pour transmettre des informations supplémentaires aux assistants d’authentification.
-
capability[]
-
Cela signale que Git, ou l’assistant, selon le cas, prend en charge la capacité en question. Cela peut être utilisé pour fournir de meilleures données, plus précises dans le cadre du protocole. Une directive
capability[]
doit précéder toute valeur qui dépend d’elle et ces directives devraient être le premier élément annoncé dans le protocole.Il existe actuellement deux capacités prises en charge. La première est
authtype
, qui indique que les valeursauthtype
,credential
, etephemeral
sont comprises. La seconde eststate
, qui indique que les valeursstate[]
andcontinue
sont comprises.Il n’est pas obligatoire d’utiliser les fonctionnalités supplémentaires juste parce que la capacité est supportée, mais elles ne devraient pas être fournies sans la capacité.
Les attributs et capacités non reconnus sont ignorés en silence.
FORMAT D’ENTRÉE/SORTIE DE CAPACITÉ
Pour git credential capability
, le format est légèrement différent. D’abord, une annonce version 0
est faite pour indiquer la version actuelle du protocole, et ensuite chaque capacité est annoncée avec une ligne comme capability authtype
. Les assistants d’accréditation peuvent également mettre en œuvre ce format, de même avec l’argument capability
. Des lignes supplémentaires peuvent être ajoutées à l’avenir ; les appelants doivent ignorer les lignes qu’ils ne comprennent pas.
Parce qu’il s’agit d’une nouvelle partie du protocole d’aide à l’accréditation, les anciennes versions de Git, ainsi que quelques assistants d’accréditation peuvent ne pas le prendre en charge. Si un statut de sortie non nulle est reçu, ou si la première ligne ne commence pas avec le mot version
et un espace, les appelants devraient supposer qu’aucune capacité n’est supportée.
L’intention de ce format est de le différencier de la sortie d’accréditation d’une manière non ambiguë. Il est possible d’utiliser des assistants d’accréditation très simples (p. ex., des scripts shell en ligne) qui produisent toujours une sortie identique. L’utilisation d’un format distinct permet aux utilisateurs de continuer à utiliser cette syntaxe sans avoir à s’inquiéter de la mise en œuvre correcte des annonces de capacité ou d’appels accidentellement confus demandant des capacités.
GIT
Fait partie de la suite git[1]
TRADUCTION
Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .