2017-04-03 3 views
0

에서 Windows 인증을 가진 MVC API를 사용하는,이 질문의 목적 만이 하나의 컨트롤러 :은 내가 MVC 응용 프로그램을 개발 한 VBA

Public Function GetValue() 
    Return User.Identity.Name 
End Function 

응용 프로그램은 인트라넷 네트워크에서 사용되는, 따라서 'Windows 인증'으로 설정했습니다.

목적은 VBA를 통해이 응용 프로그램에 쿼리하는 것입니다. 내가 로컬 응용 프로그램 (. Excel을 실행하는 컴퓨터에서 즉 디버그)를 실행하면

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
With objHTTP 
    .Open "GET", URL, False 
    .setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
    .setRequestHeader "Content-type", "application/json" 
    .setRequestHeader "data-type", "json" 
    .send 
    .WaitForResponse 
    sResult = .ResponseText 
End With 
Debug.Print (sResult) 

, 그것은 크롬을 통해 작동합니다 (로컬 호스트에 접속 : xxxxx는/API/이름은 내 액티브 디렉토리 사용자 이름으로 XML 파일을 반환).

VBA 루틴도 정상적으로 작동하며 출력 창에 Chrome에 표시되는 XML이 표시됩니다.

이제 프로젝트를 IIS 서버에 게시해도 Chrome을 통해 계속 작동합니다 (myserver/api/name에 액세스하면 내 ActiveDirectory 사용자 이름으로 xml 파일이 반환 됨). 내가 VBA 모듈을 실행할 때 그러나, 그것은 오류 401를 반환

Error:401 - Unauthorized: Access is denied due to invalid credentials. 

그것이 내가 뭔가를 조정할 필요가 브라우저에서 작동하는 서버 측 구성이 OK 믿고 날 리드하고 있다는 사실 내 VBA. 어떤 당신이 @SWa 코멘트 나에게 :)

+1

를 사용하여 당신은'WinHTTPRequest.5.1' 라이브러리를 사용, 이것은 당신이 당신이 로그인 할 수 있도록 인증 설정을 조정할 수 있도록한다 – SWa

답변

0

감사를 제공 할 수 있습니다 리드를 위해 나는이 시점에서 약간의 단서임을 인정해야

이 ... 감사합니다, 나는 약간의 비틀기로 이것을 해결 기능 : WinHttpRequest로 전환하고 setAutoLogonPolicy 0

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 
With objHTTP 
    .Open "GET", URL, False 
    .setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
    .setRequestHeader "Content-type", "application/json" 
    .setRequestHeader "data-type", "json" 
    .setAutoLogonPolicy 0 
    .send 
    .WaitForResponse 
    sResult = .ResponseText 
End With 
Debug.Print (sResult)