git-ecosystem / git-ecosystem/git-credential-manager

Credential protocol enhancement: OAuth token expiration and refresh tokens

Open
#2,059 4 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement gcm3.0
Dominant language
C#
Stars
9.3k
Forks
2.9k
Avg merge
7d 1h
Merged PRs (30d)
14

Description

Starting in Git 2.40, the protocol learned a few new keys including around storing and retrieving an OAuth token's expiration date. This will be helpful to support such that tokens stored in credential stores can be used or discarded without an extra network call to determine if they are still within the validity period. 

Likewise, the protocol from v2.41 now includes an optional OAuth refresh token key that allows helpers to more easily communicate both an access and refresh token as part of a get + store/erase request and response pair. Today, host providers have had to preemptively store the refresh token manually, in a separate credential store entry, even if the incorrect user account was selected.

Author: @mjcheetham

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how credential get, store, and erase requests parse and exchange protocol keys. Review the Git 2.40 expiration and Git 2.41 refresh-token additions, then identify the affected tests or entry points; done means both values are handled correctly across the credential request and response flow.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, git
Domain
api, authentication
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.