문제

Nant(V0.86.3317.0)를 사용하여 SourceGear Vault(V4.1.4)에서 여러 작업을 수행하고 싶습니다.

Vault에서 Nant의 Windows 인증을 사용하여 연결을 생성할 수 있는 방법이 있습니까?

볼트 연결을 초기화하는 데 사용하는 Nant 블록은 다음과 같습니다.

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

다른 개발자와 함께 프로젝트를 진행하고 있기 때문에 사용자 이름과 비밀번호를 Nant 빌드 파일에 하드 코딩하는 것은 좋은 생각이 아닙니다.둘 다 username 그리고 password 필수 옵션입니다. vaultsetloginoptions 명령.

다른 대안(모두 캐치 포함)은 다음과 같습니다.

(a) '관리자' 계정을 Nant 속성에 하드코딩하고 이를 사용하여 볼트를 기록합니다.nant 스크립트가 수행하는 체크인/체크아웃 작업을 담당하는 사람에 대한 감사 추적이 손실되기 때문에 이는 그다지 좋지 않습니다.또한 솔루션에 체크아웃된 파일이 있을 때 문제가 발생합니다(스크립트의 일부는 Vault에서 레이블을 생성하기 전에 모든 파일을 소스 제어로 다시 체크인하도록 보장합니다).

(b) Nant 코드의 C# 스크립트를 사용하여 사용자 이름과 비밀번호의 속성을 동적으로 설정합니다.하지만 여전히 사용자로부터 비밀번호를 얻는 데 문제가 있습니다.

(c) Vault 클라이언트에서 저장된 프로필 정보를 읽고 이를 사용하여 연결합니다(저장된 위치가 확실하지 않은 경우 제외).

이해해 주셔서 감사합니다.

도움이 되었습니까?

해결책 2

나는 이 문제를 해결하기 위해 프로토타입을 성공적으로 구현했습니다.

아래 설명된 해결 방법에 대한 전체 소스 및 바이너리는 여기에서 찾을 수 있습니다.

Vault 로그인 확장

몇 가지 사용자 정의 NAnt 작업과 기능을 만들었습니다.

<VaultLogin> 이전에 저장된 사용자 이름 및 비밀번호 정보에 대해 Windows 레지스트리를 확인합니다.찾을 수 없으면 사용자에게 로그인 창을 표시합니다.두 가지 기능에 항목을 저장하고 레지스트리를 지웁니다(로그인에 실패한 경우 - 참조). <SaveVaultLogin> 아래에) :

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

그만큼 <vaultsetloginoptions> 그런 다음 작업은 다음 기능을 사용할 수 있습니다.

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

전화를 한 후 <vaultsetloginoptions> 작업을 수행한 다음 <SaveVaultLogin> 사용자 이름과 비밀번호 값을 레지스트리에 다시 쓰는 작업입니다.이렇게 하면 성공적인 인증 세부 정보만 저장됩니다(사용자 이름과 비밀번호가 잘못된 경우 스크립트가 작업에서 실패하므로).

다음은 함께 모인 코드 블록입니다.

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

업데이트 :이제 게시물 상단에 해결 방법을 위한 바이너리 및 소스 링크가 있습니다.

다른 팁

저는 Vault에 익숙하지 않으므로 이 답변이 모호할 수 있음을 양해해 주시기 바랍니다.나는 NAnt를 사용해 많이 작업했으며 실행되는 모든 것(작업, 실행 등)은 통합 인증 모드에서 실행될 수 있는 고유한 잠재력을 가지고 있습니다.

결국 상위 NAnt 프로세스를 실행 중인 사용자에게 인증이 전달됩니다.즉, 이는 Vault의 NAnt 작업이 그렇지 않다는 신호일 수 있습니다. 지원하다 통합인증?의미, 만약에 저장소 로그인 옵션필요하다 사용자 및 비밀번호 인수를 사용하면 자격 증명을 전달할 좋은 방법이 없습니다(지시한 대로).

혹시라도 없는 경우 해결 방법 Vault의 NAnt 작업에서 부족한 잠재력을 위해 다음을 사용하는 것이 가능할 수 있습니다. <exec> 클라이언트 측 도구의 명령줄 버전을 호출하는 작업입니다(도구가 있는지 확실하지 않음).이것이 옵션인 경우 NAnt 프로세스를 실행하는 사용자가 Vault에 연결해야 하는 사용자와 동일한 한 통합 인증이 자동으로 시작됩니다.

우리는 빌드 프로세스에 통합된 몇 가지 작업을 위해 이 작업을 수행해야 했습니다.우리는 명령줄 버전으로 실행했거나 NAnt 프레임워크를 확장하여 자체 작업을 작성했습니다.어느 쪽이든 이것은 가능해야 합니다.

업데이트

Vault 포럼을 둘러본 결과 광고 통합 이는 Vault 클라이언트가 사용자에게 메시지를 표시하고 서버에 전달하도록 하는 방법일 뿐입니다. 포럼에서:

Vault 클라이언트는 항상 사용자 이름/비밀번호를 자랑합니다.우리의 광고 통합은 입력 된 암호가 Active Directory의 암호와 일치하는지 확인하는 서버로 제한됩니다.

따라서 진실 클라이언트가 내장된 방식으로 Windows 인증 정보를 전달하는 방법입니다.Vault 클라이언트 프로그램은 AD 모드에서 실행할 때 사용자 이름과 비밀번호를 입력해야 합니다.안타깝게도 사용자 이름/비밀번호를 저장하지 않으면 원활한 NAnt 통합은 먼 이야기입니다.

Scott Saad의 제안을 살펴본 후 불행하게도 명령줄 도구에는 Windows 인증을 사용하여 호출할 수 있는 옵션이 없는 것 같습니다.

나의 현재 생각은 위의 (b)와 일치합니다.

Nant 스크립트에서 호출하여 현재 Windows 사용자의 Vault 사용자 이름과 비밀번호를 묻는 라이브러리를 생성하겠습니다.

라이브러리는 이전에 입력한 Vault 사용자 이름에 대한 등록 항목을 찾고 이 Windows 사용자에 대한 로그인을 찾습니다.존재하는 경우 사용자 상호 작용 없이 스크립트에 전달됩니다.

이 사용자 이름/비밀번호가 Vault 로그인에 실패하거나 존재하지 않는 경우 라이브러리는 사용자가 현재 Vault 사용자 이름과 비밀번호를 입력할 수 있는 대화 상자를 제공합니다.

사용자 항목은 레지스트리에 암호화되어 저장됩니다. 즉, Vault 사용자 이름과 비밀번호가 변경될 때마다 한 번만 입력하면 됩니다.

이상적인 솔루션은 아니지만 상대적으로 간단하고 수용 가능한 충분한 해결 방법이어야 합니다.

어떻게 생각하나요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top