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.43.0 11/20/23
- 2.42.1 no changes
- 2.42.0 08/21/23
- 2.41.0 06/01/23
- 2.40.1 no changes
- 2.40.0 03/12/23
- 2.39.1 → 2.39.3 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
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 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.
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.
-
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.
Les attributs non reconnus sont ignorés en silence.
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 .