Authentification distante
Les registres et vcpkg_from_git()
utilisent directement les outils en ligne de commande Git pour récupérer des ressources distantes. Certaines de ces ressources peuvent être protégées contre l’accès anonyme et nécessitent une authentification ou des informations d’identification.
Les stratégies ci-dessous cherchent à atteindre le même objectif fondamental : git clone https://....
doivent réussir sans interaction. Cela permet à vcpkg d’être séparé des spécificités de votre schéma d’authentification, ce qui garantit la compatibilité directe avec toutes les améliorations de sécurité supplémentaires à l’avenir.
Vous pouvez prédéfinir les informations d’identification Git via git credential approve
:
Powershell :
"url=https://github.com`npath=Microsoft/vcpkg`nusername=unused`npassword=$MY_PAT`n" | git credential approve
Bash :
echo "url=https://github.com"$'\n'"path=Microsoft/vcpkg"$'\n'"username=unused"$'\n'"password=$MY_PAT"$'\n' | git credential approve
Pour les systèmes qui ont besoin de l’authentification du porteur, vous pouvez utiliser git config
:
Notes
Vous devez apporter ces modifications de configuration avec --global
git config --global --unset-all http.<uri>.extraheader
git config --global http.<uri>.extraheader "AUTHORIZATION: bearer <System_AccessToken>"
Il <uri>
peut être rempli avec une variété d’options, par exemple https://dev.azure.com/MYORG/
. Pour plus d’informations, consultez la git config
documentation.
(Source d’origine dans : Meilleure façon de s’authentifier auprès d’un référentiel Git dans un processus de génération.
Utilisateurs Azure DevOps : vous devrez peut-être activer l’accès via l’étendue d’autorisation du travail et référencer le référentiel dans votre pipeline yaml :
resources:
repositories:
- repository: <FRIENDLYNAME>
type: git
name: <ORG>/<REPO>
tag: tags/<TAG>
...
jobs:
- job: Build
uses:
repositories: [<FRIENDLYNAME>]
À l’aide VCPKG_KEEP_ENV_VARS
ou VCPKG_ENV_PASSTHROUGH_UNTRACKED
, vous pouvez transmettre des informations d’identification via l’environnement.
export VCPKG_KEEP_ENV_VARS=MY_TOKEN_VAR
export MY_TOKEN_VAR=abc123
Vous pouvez ensuite l’utiliser dans vos ports privés avec les pvcpkg_from_git()
ou vcpkg_from_github()
les helpers.
# vcpkg-from-git-example/portfile.cmake
set(MY_TOKEN_VAR "")
if(DEFINED ENV{MY_TOKEN_VAR})
set(MY_TOKEN_VAR "$ENV{MY_TOKEN_VAR}@")
endif()
vcpkg_from_git(
URLS "https://${MY_TOKEN_VAR}host.com/normal/url/path"
...
)
# vcpkg-from-github-example/portfile.cmake
vcpkg_from_github(
AUTHORIZATION_TOKEN "$ENV{MY_TOKEN_VAR}"
)
Pour les ports privés, nous vous recommandons d’utiliser vcpkg_from_git()
vcpkg_from_github()
plutôt que la méthode de pré-amorçage ci-dessus.
L’option la plus simple et la plus sécurisée pour l’authentification GitHub auprès de GitHub à partir de Jenkins utilise GitHub App et les éléments suivants :
withCredentials([gitUsernamePassword(credentialsId: 'jenkins-github-app')]) {
withEnv(['VCPKG_KEEP_ENV_VARS=GIT_ASKPASS']) {
bat 'cmake'
}
}
Cela définit le GIT_ASKPASS
chemin d’accès au script d’assistance qui répond avec la requête d’informations d’identification Git et indique vcpkg
de conserver cette variable d’environnement. Le mot de passe est un jeton d’application GitHub avec une durée de vie de 1 heure.
Commentaires sur vcpkg
vcpkg est un projet open source. Sélectionnez un lien pour fournir des commentaires :