2012-06-20 2 views
0

DOMAIN \ USER1 계정으로 실행되는 MVC3 웹 응용 프로그램이 있습니다. 이 사용자는 AD 세트에 SPN이 있으며 위임을 위해 트러스트됩니다.ASP.NET : 호출자를 가장 할 수 없습니다 (2 홉?)

나는이 응용 프로그램이 발신자를 대신하여 셰어 포인트 서버에 액세스하여 그녀/그를 위해 파일을 업로드하기를 원합니다. 다음 코드를 사용합니다.

Dim request = HttpWebRequest.Create(http://sharepoint.domain.com) 

request.Method = WebRequestMethods.Http.Head 
request.PreAuthenticate = True 
Dim identity = New WindowsIdentity(callerName & "@domain.com") 
Dim impContext = identity.Impersonate() 
'###### At this point identity.ImpersonationLevel is `Impersonate` not `Delegate` 

request.Credentials = CredentialCache.DefaultNetworkCredentials 
'###### DefaultNetworkCredentials is empty (Username, domain and password are all empty strings) 

Dim response As HttpWebResponse 

Try 
    response = request.GetResponse() 
    Return JsonSuccess() 
Catch ex As WebException 

    '###### I get 401 Unauthorized exception 
    Return JsonError(ex.Message) 
Finally 
    impContext.Undo() 
End Try 

내 질문에 대한 답변입니다. 이 시점의 가장 수준은 Impersonate 또는 Delegate이어야합니다 (Sharepoint는 IIS 서버와 다른 컴퓨터에서 실행됩니다). AD에서 셰어 포인트와 HTTP에 대한 프로토콜 전환도 구성 했으므로 Impersonate은 요청을 한 후에 Delegate으로 변경해야합니까? 나도 몰라, 지침을 부탁드립니다.

또 다른 질문은 - CredentialCache.DefaultNetworkCredentials에 적어도 가장 한 사용자의 사용자 이름이 포함되어 있지 않아야합니까? 내가 여기에 대한 답을 찾을

답변

0

:

http://support.microsoft.com/kb/810572

"Kerberos는 부하가 분산 된 아키텍처에서 작동하지 않습니다 그리고 당신은, 위임에 모든 응용 프로그램이나 서비스를 NTLM을 사용할 수 없기 때문에 IIS가 NTLM 인증으로 다시 떨어진다. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.

그리고 그 경우도 마찬가지입니다. 로드 밸런싱되지 않은 다른 머신으로 시도해 보았습니다. 아직도 날 놀라게

유일한 것은 정체성의 ImpersonationLevel 여전히 Impersonate하지 Delegate ...

때문이다