Azure DevOpsのgitリポジトリに LibGit2Sharp を使ったコードでアクセスする際、私は今まで Azure DevOpsで Alternate Credentials として設定した ID/パスワードを利用していました。 しかしながら、Alternate Credentials がついに来月、2020年3月2日をもって完全に無効になるという事で、Personal Access Tokens(PAT)に切り替えることにしました。
方法:UsernamePasswordCredentials でPasswordとしてTokenを設定するだけ
"切り替える"といっても、特に難しいことはありませんでした。 CredentialsProvider として UsernamePasswordCredentialsを利用し Alternate Credentials のID/Password を用いて認証していたコードからは以下2点が異なるだけです。
- Username : 任意の文字列を設定(NULLや空文字列はNG)
- Password : 生成したPATを設定
コード例:
// ローカルのリポジトリを開いて認証が必要なリモートoriginをfetchするサンプル private void FetchSample() { var RepositoryLocalPath = @"C:\Some\Rep\Path"; using (var repo = new Repository(RepositoryLocalPath)) { var remote = repo.Network.Remotes["origin"]; var refSpecs = remote.FetchRefSpecs.Select(x => x.Specification); var fetchOption = new FetchOptions() { CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { Username = "anystring", // 任意の文字列。NULLや空文字列はNG。 Password = "hogefugahagamogehogefugahagamogehogefugahagamoge" // Azure DevOpsで生成したPAT } }; var logMessage = ""; Commands.Fetch(repo, remote.Name, refSpecs, fetchOption, logMessage); } }