|
1 | 1 | # Git Credential Manager Host Provider
|
2 | 2 |
|
3 |
| -Property|Value |
4 |
| --|- |
5 |
| -Author(s)|Matthew John Cheetham ([@mjcheetham][mjcheetham]) |
6 |
| -Revision|1.2 |
7 |
| -Last updated|2021-01-08 |
8 |
| - |
9 |
| -## Revision Summary |
10 |
| - |
11 |
| -- 1.0. Initial revision. |
12 |
| -- 1.1. Replaced `GetCredentialKey` with `GetServiceName`. |
13 |
| -- 1.2. Added new `IsSupported(HttpResponseMessage)` overload, the optional |
14 |
| - `ICommandProvider` interface, and registration priorities. |
15 |
| - |
16 | 3 | ## Abstract
|
17 | 4 |
|
18 | 5 | Git Credential Manger, the cross-platform and cross-host Git credential
|
19 | 6 | helper, can be extended to support any Git hosting service allowing seamless
|
20 | 7 | authentication to secured Git repositories by implementing and registering a
|
21 | 8 | "host provider".
|
22 | 9 |
|
23 |
| -## Table of Contents |
24 |
| - |
25 |
| -- [1. Introduction](#1-introduction) |
26 |
| - - [1.1. Notational Conventions](#11-notational-conventions) |
27 |
| - - [1.2. Abbreviations](#12-abbreviations) |
28 |
| -- [2. Implementation](#2-implementation) |
29 |
| - - [2.1. Registration](#21-registration) |
30 |
| - - [2.1.2. Ordering](#212-ordering) |
31 |
| - - [2.2. Handling Requests](#22-handling-requests) |
32 |
| - - [2.2.1. Rejecting Requests](#221-rejecting-requests) |
33 |
| - - [2.3. Retrieving Credentials](#23-retrieving-credentials) |
34 |
| - - [2.3.1 Authentication Prompts](#231-authentication-prompts) |
35 |
| - - [2.4. Storing Credentials](#24-storing-credentials) |
36 |
| - - [2.5. Erasing Credentials](#25-erasing-credentials) |
37 |
| - - [2.6 `HostProvider` base class](#26-hostprovider-base-class) |
38 |
| - - [2.6.1 `GetServiceName`](#261-getservicename) |
39 |
| - - [2.6.2 `GenerateCredentialAsync`](#262-generatecredentialasync) |
40 |
| - - [2.7. External Metadata](#27-external-metadata) |
41 |
| -- [3. Helpers](#3-helpers) |
42 |
| - - [3.1. Discovery](#31-discovery) |
43 |
| -- [4. Error Handling](#4-error-handling) |
44 |
| -- [5. Custom Commands](#5-custom-commands) |
45 |
| -- [References](#references) |
46 |
| - |
47 | 10 | ## 1. Introduction
|
48 | 11 |
|
49 | 12 | Git Credential Manager (GCM) is a host and platform agnostic Git
|
50 | 13 | credential helper application. Support for authenticating to any Git hosting
|
51 | 14 | service can be added to GCM by creating a custom "host provider" and
|
52 | 15 | registering it within the product. Host providers can be submitted via a pull
|
53 |
| -request on GitHub at <https://github.com/GitCredentialManager/git-credential-manager>. |
| 16 | +request on [the Git Credential Manager repository on GitHub][gcm]. |
54 | 17 |
|
55 | 18 | This document outlines the required and expected behaviour of a host provider,
|
56 | 19 | and what is required to implement and register one.
|
@@ -85,7 +48,7 @@ provider with the application via the host provider registry.
|
85 | 48 | Host providers MUST implement the `IHostProvider` interface. They can choose to
|
86 | 49 | directly implement the interface they MAY derive from the `HostProvider`
|
87 | 50 | abstract class (which itself implements the `IHostProvider` interface) - see
|
88 |
| -[§2.6](#26-hostprovider-base-class). |
| 51 | +[§2.6][hostprovider-base-class]. |
89 | 52 |
|
90 | 53 | Implementors MUST implement all interface properties and abstract methods.
|
91 | 54 |
|
@@ -380,5 +343,6 @@ take, but implementors SHOULD attempt to follow existing practices and styles.
|
380 | 343 |
|
381 | 344 | 1. [`System.CommandLine` API][github-dotnet-cli]
|
382 | 345 |
|
| 346 | +[gcm]: https://github.com/GitCredentialManager/git-credential-manager |
383 | 347 | [github-dotnet-cli]: https://github.com/dotnet/command-line-api
|
384 |
| -[mjcheetham]: https://github.com/mjcheetham |
| 348 | +[hostprovider-base-class]: #26-hostprovider-base-class |
0 commit comments