Pregunta

Estoy deseando realizar una serie de tareas en SourceGear Bóveda (V4.1.4) con Nant (V0.86.3317.0).

Hay alguna manera de que podamos conseguir una Bóveda, para utilizar la Autenticación de Windows Nant para crear la conexión?

El Nant bloque estoy utilizando para inicializar la bóveda connect es :

<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" />

Como estoy trabajando en el proyecto con otros desarrolladores, duro de codificación de los nombres de usuario y contraseñas en la Nant construir archivo no es una buena idea.Ambos username y password son opciones necesarias en el vaultsetloginoptions comando.

Otras alternativas (todas con las capturas) incluyen :

(a) Codificar el 'Admin' cuenta en la Nant propiedades y registro de bóveda en el uso que.Esto no es tan grande, como nosotros, a continuación, suelta una pista de auditoría de los que es responsable para el check-in / check-out las operaciones de la nant secuencia de comandos realiza.También causa problemas cuando la solución tiene archivos descargados (a parte de la secuencia de comandos se asegura de que todos los archivos se comprueban de nuevo en control de código fuente antes de generar una etiqueta en la Bóveda).

(b) el Uso de C# de secuencia de comandos de la Nant código para establecer las propiedades de nombre de usuario y contraseña de forma dinámica ...excepto hemos entonces tiene un problema de conseguir la contraseña de el usuario todavía

(c) Lea el perfil almacenado la información de la Bóveda del cliente y conectarse usando que (salvo que no estoy seguro de donde está almacenado).

Gracias por su consideración.

¿Fue útil?

Solución 2

Me han implementado con éxito el prototipo para evitar este problema.

Completa de la Fuente y los Binarios para la solución descrita a continuación puede encontrar aquí :

Bóveda De Inicio De Sesión De Extensiones

He creado algunos personalizado NAnt tareas y funciones.

<VaultLogin> comprueba el Registro de Windows para el nombre de usuario y la contraseña de la información previamente almacenada.Si no se encuentra pide al usuario con una ventana de inicio de Sesión.Almacena las entradas en dos funciones y borra el registro (en caso de que el error de inicio de sesión - ver <SaveVaultLogin> a continuación) :

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

El <vaultsetloginoptions> la tarea es entonces capaz de utilizar las funciones de :

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

Después de llamar a la <vaultsetloginoptions> la tarea, entonces llamada la <SaveVaultLogin> tarea que escribe el nombre de usuario y la contraseña de valores en el registro.Esto asegura que sólo tiene éxito la autenticación de datos son almacenados (como el guión falla en la tarea si el nombre de usuario y la contraseña son incorrectos.

Este es el bloque de código armar :

  <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 />    

Actualización :enlace a binarios y código fuente para la que trabaja ahora en la parte superior de los postes.

Otros consejos

Estoy familiarizado con Bóveda de crucería, así que por favor perdonen el potencial de la vaguedad de esta respuesta.He trabajado con NAnt mucho y cualquier cosa que se ejecuta (tareas, ejecutivos, etc) tienen el potencial inherente para estar en ejecución en su sistema integrado de modo autenticado.

Al final, la autenticación se pasa junto a cualquier usuario que esté ejecutando el padre NAnt proceso.Lo que se dice, esto podría ser una señal de que la Bóveda de NAnt tareas no apoyo la autenticación integrada?Es decir, si la vaultsetloginoptions tarea requiere el usuario y contraseña de argumentos, entonces no hay una buena manera de pasar a lo largo de credenciales (como se señaló).

Si no pasa a ser no soluciones para los que carecen de potencial en la Bóveda del NAnt tareas puede ser posible el uso de la <exec> tarea para llamar a una versión de línea de comandos de su lado del cliente de la herramienta (ni siquiera estoy seguro si es que tiene uno).Si esta es una opción, la autenticación integrada se pondrá automáticamente en el tiempo que el usuario que ejecuta el NAnt proceso es el mismo como la necesidad de conectarse a la Bóveda.

Hemos tenido que hacer esto por un par de cosas que podemos integrar en nuestro proceso de construcción.Hemos ya sea exec d para la versión de línea de comandos o se han escrito nuestra propia Tarea(s) mediante la ampliación de la NAnt marco.De cualquier manera, esto debería ser posible.

Actualización

Hizo algunos mirando a su alrededor en la Bóveda de los foros y parece que el ANUNCIO de la integración es simplemente una forma de Bóveda Cliente pedirá el usuario y pasar junto al servidor. Desde el foro:

La Bóveda cliente siempre será el símbolo del sistema el nombre de usuario/contraseña.Nuestro ANUNCIO la integración es limitado para el servidor verificar que la contraseña introducida coincide con la contraseña de Active Directorio.

Por lo tanto, no hay ninguna cierto manera para que el cliente pase a lo largo de la autenticación de windows la información en una manera integrada.La Bóveda del programa cliente requiere que se introduzca el nombre de usuario y la contraseña cuando se ejecuta en modo AD.Lamentablemente, parecería sin almacenar el nombre de usuario/contraseña, las posibilidades de perfecta NAnt la integración es una medida de disparo.

Después de mirar a Scott Saad sugerencia, por desgracia, parece ser que no hay opción en la herramienta de línea de comandos, ya sea para llamar utilizando la Autenticación de Windows.

Mi pensamiento actual está en línea con la letra b) anterior.

Voy a crear una biblioteca que puede ser llamado desde el Nant script, pidiendo el usuario actual de windows Vault nombre de usuario y contraseña.

La biblioteca de la mirada en un resigstry entrada para un introducidos previamente Bóveda de usuario y clave de acceso para este usuario de windows.Si existe, se pasará a la secuencia de comandos sin ninguna interacción del usuario.

Si este nombre de usuario / contraseña de falla de la bóveda de inicio de sesión, o si no existe, entonces la biblioteca proporcionará un cuadro de diálogo para que el usuario introduzca la actual bóveda nombre de usuario y contraseña.

La entrada del usuario se almacenarán en el registro (cifrado) que significa esto sólo se introducen una vez cada vez que la Bóveda nombre de usuario y cambio de contraseña.

No es una solución ideal, pero debe ser relativamente sencilla y lo suficientemente aceptables de trabajo a su alrededor.

¿Qué te parece?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top