Bitbucket-Authentifizierung zur Verwendung von LibGit2Sharp

Lesezeit: 3 Minuten

Benutzer-Avatar
Gabor Domonkos

Ich habe die CSharp.Bitbucket-Bibliothek verwendet, um Benutzer mit Bitbucket zu authentifizieren (https://github.com/scottksmith95/CSharp.Bitbucket). Die Authentifizierung funktioniert gut, ich bekomme den Tokenwert und die geheimen Tokenwerte.

Ich habe bereits eine Logik geschrieben – mit Hilfe von LibGit2Sharp (https://github.com/libgit2/libgit2sharp) – zum Klonen/Pullen/Pushen des Inhalts des Benutzer-Repositorys. Es funktioniert gut, wenn sich der Benutzer bei GitHub authentifiziert. In diesem Fall muss ich den Wert des Zugriffstokens für den Benutzernamen und eine leere Zeichenfolge für das Passwort angeben.

 LibGit2Sharp.Credentials credentials = new UsernamePasswordCredentials()
        {
            Username = [GITHUB ACCESS TOKEN], 
            Password =""
        };

Aber was ist mit Bitbucket? Kann ich LibGit2Sharp auf diese Weise verwenden? Ich konnte keine Dokumentation zu diesem Problem finden. Ich habe versucht, den Token-Wert und das Token-Geheimnis auch für den Benutzernamen zu verwenden, aber es schlägt fehl.

Geben Sie hier die Bildbeschreibung ein

Ich möchte Bitbucket auch mit Git und Mercurial verwenden. Gibt es einen kleinen Trick, den ich bisher nicht realisieren konnte?

Danke für Ihre Hilfe!

Diese Art, das Token als Benutzernamen mit einem leeren Passwort zu übergeben, ist spezifisch für GitHub AFAIK (siehe diesen Hilfeartikel). Der Artikel besagt auch, dass das Bestehen x-oauth-basic funktioniert.

Das BitBucket-Problem #7735 scheint zu besagen, dass das Übergeben des Tokens als Benutzername und x-oauth-basic würde auch funktionieren.

  • Das Zugriffstoken hat auch einen Wert und ein Geheimnis. Ich habe beides versucht (und die Passwort-Variable leer gelassen), aber ich habe die folgende Fehlermeldung erhalten. Was meint ihr, was habe ich falsch gemacht?

    – Gabor Domonkos

    14. Juli 2014 um 16:46 Uhr


  • Es kann sich lohnen, eine E-Mail an [email protected] zu senden

    – Nulltoken

    14. Juli 2014 um 18:44 Uhr

Diese Frage ist alt, aber ich werde für diejenigen antworten, die auf dieses Problem stoßen. Zunächst müssen Sie sich einen Zugangstoken besorgen. Es ist gut erklärt hier.

Sobald Sie das Token haben, können Sie sich auf diese Weise authentifizieren

   CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials
        {
            Username = x-token-auth:[ACCES-TOKEN],
            Password = ""
        } 

Hoffe es hilft jemandem.

  • Es funktioniert nicht für mich. Ich erhalte den Fehler „zu viele Weiterleitungen oder Authentifizierungswiederholungen“

    – Piyush Sahu

    5. November 2020 um 6:24 Uhr

  • Ich sehe auch den Fehler zu viele Weiterleitungen

    – Chris Surfleet

    31. August 2021 um 9:12 Uhr

Benutzer-Avatar
Samko

[2022] Sie können verwenden LibGit2Sharp sogar für Bitbucket aber Sie brauchen keine Token. Bei der Verwendung des App-Passworts gibt es einen etwas anderen Ablauf. (Dies funktioniert sogar mit aktiviertem 2FA.)

  1. Gehen Sie im Bitbucket zu:

    • https://bitbucket.org/account/settings/app-passwords/
    • oder manuell navigieren:
      Click your picture -> Personal settings -> App passwords
  2. Klicken Create app password

    • Benennen Sie es nach dem Dienst, in dem Sie es verwenden/zu welchem ​​Zweck
    • Fügen Sie die erforderlichen Berechtigungen hinzu
    • Klicken Sie auf Erstellen
  3. Finden Sie Ihren Bitbucket-Namen:

    • navigieren zu https://bitbucket.org/account/settings/
    • oder Click your picture -> Personal settings -> Account settings
    • und in Unterkategorie Bitbucket profile settings ist dein Username
  4. Wenden Sie diese Anmeldeinformationen auf Ihren Code an. Z.B

    var url = "https://bitbucket.org/<user_or_org_name>/<repository_name>.git";
    var Username = "<your_user_name>";
    var Password = "<your_app_password>";
    var localPathForRepository = @"D:\temp";
    
    var creds = new UsernamePasswordCredentials()
    {
        Username = Username,
        Password = Password
    };
    
    CredentialsHandler credHandler = (_url, _user, _cred) => creds;
    
    bool dirExists = Directory.Exists(localPathForRepository);
    if (dirExists)
    {
        Directory.Delete(localPathForRepository, true);
    }
    Directory.CreateDirectory(localPathForRepository);
    
    var cloneOptions = new CloneOptions { BranchName = "master", Checkout = true, CredentialsProvider = credHandler };
    var cloneResult = Repository.Clone(url, localPathForRepository, cloneOptions);
    
  5. ERLEDIGT

Quellen:

https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/

https://id.atlassian.com/manage-profile/security/api-tokens

https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Use-an-API-token

1018100cookie-checkBitbucket-Authentifizierung zur Verwendung von LibGit2Sharp

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy