김씨의 IT 이야기

cloud

Posts Tagged ‘authenticate

TFS API 사용 시 인증 실패

leave a comment »

환경은 다음과 같다.

1. 개발PC(A), 웹서버(B), TFS 서버(C)
2. TFS는 듀얼서버로 구성되어 AD 인증
3. 개발PC는 AD에 조인하지 않음
4. TFS 2008, Visual Studio 2008 Team Suite

위와 같은 환경으로 구성되어 있을 때 VS2008에서 프로젝트를 생성하고 다음과 같은 코드를 작성하였다.

TeamFoundationServer tfs = new TeamFoundationServer(URI , new UICredentialsProvider());
tfs.EnsureAuthenticated();

위 코드는 Buck Hodges의 블로그에 언급된 방법으로 인증에 실패할 경우 자동으로 인증창을 띄워준다고 한다. 많은 포스트에서 위 방법을 추천하고 있다. 그러나 이 방법대로 할 경우 VS에서 디버깅으로 실행할 경우는 잘 동작하나 웹서버에 게시하고 실행할 경우 hang에 걸린다. 인증창이 나타나지 않는다.

이를 해결하기 위해서는 약간의 서버 환경 수정 작업이 필요하다.

1. Web.config 수정
<appSettings>
    <add key=”WorkItemTrackingCacheRoot” value=”d:\vsts” />
  </appSettings>
<authentication mode=”Windows”/>
    <identity impersonate=”true”/>
위 코드 추가

2. TFS 서버 AT의 로컬보안정책 수정
실행>관리도구>로컬보안정책>로컬 정책> 사용자 권한 할당>네트워크에서 이 컴퓨터 액세스 항목에 Authenticated Users 추가

3. 개발PC 및 웹서버의 디렉토리 권한 수정
개발PC와 웹서버의 D:\vsts 디렉토리 즉 위의 web.config에서 설정한 경로의 디렉토리 권한 설정에서 everyone 계정에 모든 권한 추가

4. 코드 수정
NetworkCredential networkCreditial = new NetworkCredential(“id”, “password”, “domain”);
ICredentials credential = (ICredentials)networkCreditial;
TeamFoundationServer  tfs = new TeamFoundationServer(ServerURI, credential);
tfs.EnsureAuthenticated();
인증하고자 하는 도메인 계정으로 인증한다.

위와 같은 작업을 해주면 된다.
TFS는 정말.. 산넘어 산 ㅠ.ㅠ

참조 포스팅
Naren’s Blog : How to configure WIT OM on a web application?
문제 해결에 지대한 공헌을 한 포스팅
MSDN Forum : Programmatic authentication on TFS
문제 해결의 실마리를 얻은 곳
Richard Fennell
web.config 에 WorkItemTrackingCacheRoot 값을 설정하지 않을 경우 ‘Microsoft\Team Foundation\2.0\Cache’에 접근할 권한이 없다는 에러를 발생하게 된다.
MSDN Forum : Cannot pass a GCHandle across AppDomains
Buck Hodges : How to get the login dialog when using the Team Foundation Server API

Written by moris Kim

2008/06/11 at 15:20

%d 블로거가 이것을 좋아합니다: