Frage

Ich wünsche eine Reihe von Aufgaben in SourceGear Vault (V4.1.4) mit Nant (V0.86.3317.0) auszuführen.

Gibt es eine Möglichkeit wir Vault erhalten können Windows-Authentifizierung von Nant zu verwenden, um die Verbindung zu erstellen?

Der Nant Block I das Gewölbe einer Verbindung zu initialisieren sind mit ist:

<target name="InitialiseVaultSettings">
<echo>InitialiseVaultSettings</echo>
<vaultsetloginoptions user="${vault.Username}" password="${vault.Password}" URL="${vault.Host}" repository="${vault.Repository}" />
<vaultsetworkingfolder repositoryFolderPath="${vault.Folder}" diskPath="${vault.WorkingDirectory}" createDiskPath="true" />

Als ich auf das Projekt mit anderen Entwicklern arbeite, harte Kodierung Benutzernamen und Kennwörter in die Datei Nant Build ist keine gute Idee. Sowohl username und password erforderlich sind Optionen im vaultsetloginoptions Befehl.

Andere Alternativen (alle mit Rasten) schließen ein:

(a) codieren das Konto ‚Admin‘ in die Nant Eigenschaften und melden Sie sich Gewölbe, dass mit. Das ist nicht so groß, wie wir dann eine Audit-Trail von verlieren, die für die Check-in / Check-out-Operationen verantwortlich ist das Nant Skript führt. Es verursacht auch Probleme, wenn die Lösung Dateien ausgecheckt hat (Teil des Skripts garantiert, dass alle Dateien zurück in der Quellcodeverwaltung überprüft werden, bevor ein Etikett in Vault zu erzeugen).

(b) einen C # Skript aus dem Nant Code Verwenden Sie die Eigenschaften von Benutzername und Passwort dynamisch ... zu setzen, außer wir haben dann ein Problem bekommt das Passwort von dem Benutzer immer noch

(c) Lesen Sie die gespeicherten Profilinformationen aus dem Vault-Client und verbinden mit, dass (außer ich bin nicht sicher, wo es gespeichert wird).

Vielen Dank für Ihre Aufmerksamkeit.

War es hilfreich?

Lösung 2

ich mit Erfolg umgesetzt habe, die Prototypen zu arbeiten-um dieses Problem.

Vollständige Quelle und Binaries für die Problemumgehung unten beschrieben kann hier gefunden werden:

Vault Login-Extensions

Ich habe einige benutzerdefinierte NAnt Aufgaben und Funktionen erstellt.

<VaultLogin> überprüft die Windows-Registrierung für Benutzername und Passwort Informationen, die zuvor gespeichert. Wenn nicht gefunden fordert er den Benutzer mit einem Login-Fenster. Es speichert die Einträge in zwei Funktionen und löscht die Registrierung (falls die Anmeldung nicht möglich - siehe <SaveVaultLogin> unten):

${VaultLoginFunctions::UserName()}
${VaultLoginFunctions::Password()}

Die <vaultsetloginoptions> Aufgabe ist dann in der Lage, die Funktionen zu nutzen:

<vaultsetloginoptions user="${VaultLoginFunctions::UserName()}" password="${VaultLoginFunctions::Password()}" URL="${vault.Host}" repository="${vault.Repository}" />

Nach der <vaultsetloginoptions> Aufgabe aufrufen, wir die <SaveVaultLogin> Aufgabe dann rufen, die die Benutzername und Passwort-Werte zurück in die Registrierung schreibt. Dadurch wird sichergestellt, dass nur erfolgreiche Authentifizierungsdaten gespeichert werden (wie das Skript an der Aufgabe scheitert, wenn der Benutzername und das Passwort ist nicht korrekt.

Dies ist der Code-Block zusammen:

  <target name="InitialiseVaultSettings">
<echo>InitialiseVaultSettings</echo>

<loadtasks assembly="CompassHealth.NAntExtensions.Tasks.dll" />

<VaultLoginGet />
<echo message="UserName = ${VaultLoginFunctions::UserName()}" />

<vaultsetloginoptions user="${VaultLoginFunctions::UserName()}" password="${VaultLoginFunctions::Password()}" URL="${vault.Host}" repository="${vault.Repository}" />

<vaultsetworkingfolder repositoryFolderPath="${vault.Folder}" diskPath="${vault.WorkingDirectory}" createDiskPath="true" />


<!-- need to save the login here, as it is cleared once VaultLoginGet is called, this ensures that only correct username and password are stored -->
<VaultLoginSave />    

Update:. Link zu Binärdateien und Quelle für Work-around jetzt an der Spitze der Post

Andere Tipps

Ich bin nicht vertraut mit Vault so wenden Sie sich bitte das Potenzial Unbestimmtheit dieser Antwort vergeben. Ich habe mit NAnt viel und alles funktioniert, die ausgeführt werden (Aufgaben, execs, usw.) haben das inhärente Potenzial in integriertem authentifizierten Modus ausgeführt werden.

Am Ende wird Authentifizierung übergeben entlang zu je nachdem, welchen Benutzer geschieht den übergeordneten NAnt Prozess ausgeführt werden. Davon abgesehen, ist dies ein Zeichen dafür sein könnte, dass Vault NAnt Aufgaben nicht Unterstützung integrierte Authentifizierung? Das heißt, wenn die vaultsetloginoptions Aufgabe erfordert der Benutzer und Kennwort Argumente, dann gibt es keinen guten Weg entlang Anmeldeinformationen übergeben (wie Sie wies darauf hin).

Wenn es passiert, für das Potential in Vault NAnt Aufgaben fehlt keine Abhilfen , um es möglich sein könnte, die Aus dem Forum :

  

Das Vault-Client wird immer prompt   für den Benutzernamen / Passwort. unser AD   Integration wird an den Server begrenzt   Verifizieren, dass das Passwort eingegeben   stimmt mit dem Kennwort in Active   Directory.

Daher gibt es keine true Art und Weise für die Kunden entlang Fenstern Authentifizierungsinformationen in einem integrierten Weg passieren zu. Das Vault-Client-Programm erfordert eine zur Eingabe von Benutzername und Passwort, wenn sie in AD-Modus ausgeführt wird. Leider scheint es, ohne den Benutzernamen / Passwort zu speichern, sind die Chancen von nahtlose NAnt Integration ist ein weit Schuss.

bei Scott Saad Vorschlag Nach einem Blick, leider scheint es entweder keine Option in dem Kommandozeilen-Tool, es zu nennen Windows-Authentifizierung verwendet wird.

Mein heutiges Denken ist im Einklang mit (b).

Ich werde eine Bibliothek erstellen, die aus dem Nant Skript aufgerufen werden können, für die aktuelle Windows-Benutzer-Vault-Benutzername und Passwort gefragt.

Die Bibliothek wird für eine zuvor eingegebene Vault Benutzernamen und ein Login für diese Windows-Benutzer in einem resigstry Eintrag suchen. Wenn es vorhanden ist, wird es ohne Interaktion mit dem Benutzer an das Skript übergeben werden.

Wenn dieser Benutzername / Passwort nicht den Tresor Login, oder wenn es nicht existiert, die Bibliothek wird einen Dialog zur Verfügung stellt für den Benutzer der aktuellen Tresor Benutzername und ein Passwort einzugeben.

Die Eingabe des Benutzers wird in der Registry (verschlüsselt) Bedeutung gespeichert werden soll dies nur einmal jedes Mal die Vault-Benutzernamen und das Passwort ändern eingegeben werden müssen.

Keine ideale Lösung, sollte aber relativ geradlinig und eine akzeptable genug Arbeit um sein.

Was denken Sie?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top