2017-12-20 18 views
0

나는 HttpClient를 사용하는 서버로 권한을 부여하는 닷넷 코어 애플리케이션 (NUnit 기반 통합 테스트)을 가지고있다. 서버는 인증을 위해 NTLM을 사용합니다.OSX에서 닷넷 코어와 NTLM

Windows에서이 테스트를 실행하면 정상적으로 작동합니다. OSX에서이 테스트를 실행하면 인증 오류가 있음을 알 수 있습니다.

피들러를 사용하여 트래픽을 볼 때 서버 응답이 "401"이며 클라이언트에게 NTLM을 사용하여 인증 할 수 있음을 알립니다. OSX에서 HttpClient의 반응은 인증 오류와 함께 반환하는 것입니다.

OSX에서는 NTLM이 지원되지 않습니까? 어떻게 든이 문제를 해결할 수 있습니까?

+0

NTLM은 OSX에서 공식적으로 지원되지 않습니다.이 프로토콜은 Microsoft 독점 프로토콜입니다. Active Directory에 대한 SSO 프로토콜의 경우 Kerberos를 사용합니다. 하지만 NTLM에 대해 묻는 중입니다. 인터넷에서 볼 수있는 NTLM 모듈은 역 설계된 NTLM 버전이거나 작동하지 않을 수도 있고 작동하지 않을 수도 있음을 알고 있어야합니다. 당신은 OS 플랫폼에 따라 찾고 있습니다. OSX의 경우 여기를 보았지만 테스트 해 본 적이 없습니다. https://wiki.cac.washington.edu/display/UWWI/Enabling+NTLMv2+on+Mac+OS-X –

+0

OSX에서 Firefox 웹 브라우저 : https://src.chromium.org/viewvc/chrome/trunk/src/net/http/http_auth_handler_ntlm.h?view=markup&pathrev=10667 –

답변

0

내가 해결책을 발견,이 작업을 수행해야합니다

 var credential = new NetworkCredential(userName, password, domain); 
     var myCache = new CredentialCache(); 
     myCache.Add(new Uri(myURL), "NTLM", credential); 

     var handler = new HttpClientHandler(); 

     handler.Credentials = myCache; 

을 지금은 OSX에서 작동합니다!

그러나 창에 대한 작업이 중단되었습니다.

나는 OSX 여부에 오전 여부를 결정하는 "경우"A는 ...

어쩌면 OSX 창에이 일을 할 수있는 더 좋은 방법이 할 수있는?

+0

어떻게 그 방법을 찾았습니까? 나는 그것을 북마크하고 싶습니다. –

+0

정말 더 이상 찾을 수 없어요. 그렇지 않으면 게시했을 것입니다. 관련 링크는 다음과 같습니다. https://forums.xamarin.com/discussion/comment/129030 그러나 해결책은 완전히 동일하지 않습니다. – Nathan