3

WebBrowser 컨트롤을 사용하는 Windows Phone 8 앱을 개발 중입니다.웹 브라우저 제어 + 인증

WebBrowser 컨트롤을 NTLM 인증 웹 사이트로 이동해도 아무런 변화가 없습니다. 유일한 이벤트는 탐색이고, 컨트롤은 흰색으로 유지되며 탐색 된 이벤트 나 NavigationFailed 이벤트가 트리거되지 않습니다.

시스템 제공 웹 브라우저 응용 프로그램을 사용하여 동일한 웹 사이트로 이동하면 사용자 이름, 암호 및 도메인을 묻는 팝업이 나에게 표시됩니다.

내 응용 프로그램에서 WebBrowser 컨트롤과 비슷한 동작을 어떻게 얻을 수 있습니까?

+0

안녕하세요,이 문제에 대한 해결책이 있습니까? 예인 경우 대답으로 게시하십시오. – asitis

+0

제 대답을 참조하십시오 – Soonts

답변

6

기본 HTTP 인증에 대한 해결 방법 만 있습니다.

이러한 경우를 감지하기 위해 웹 브라우저를 탐색하기 전에 HEAD HTTP 요청을 발행합니다.

예외가 발생하지 않으면 웹 브라우저에서 해당 URI를 탐색합니다.

예외가 발생하면 WebException을 catch하고 e.Response.Headers 컬렉션을 가져오고 WWW-Authenticate 값을 확인합니다. 값이 비어 있지 않으면 서버가 인증을 요청한다고 결론을 내립니다.

WWW-Authenticate 값이 "basic"으로 시작되면 사용자에게 자신의 팝업 컨트롤을 사용하여 자격 증명을 요청합니다. 그런 다음 한 번 더 HEAD 요청을 발행하여 자격 증명의 유효성을 검사합니다. 이번에는 webClient.Credentials = new NetworkCredential (user, pass); 그들이 OK 경우

, 나는 마지막으로 다음과 같은 방법을 사용하여 웹 브라우저 컨트롤에 자격 증명을 전달 :

public static Uri addCredsToUri(Uri u, string user, string pass) 
{ 
    UriBuilder uriSite = new UriBuilder(u); 
    uriSite.UserName = user; 
    uriSite.Password = pass; 
    return uriSite.Uri; 
} 

그러나 WWW 인증 값은 서버가 NTLM 인증을 사용 즉, "협상"로 시작하는 경우 , 웹 브라우저에 자격 증명을 전달하는 방법을 모르겠습니다. 적어도이 사건을 감지하고 NTLM 인증이 지원되지 않는다는 것을 최종 사용자에게 알리는 적절한 오류 메시지를 표시합니다.

+0

시간을 절약하십시오! 고맙습니다! – vinnitu

+0

@vinnitu 당신을 진심으로 환영합니다. 슬라브 Ukrayini! :-) – Soonts

+0

:) Geroyam slava! – vinnitu

-1

인증 정보를 사용하여 브라우저를 탐색 할 수 있습니다.

웹 브라우저 컨트롤에 오버로드 메서드가 있습니다. navigate에 후가공 데이터를 받아들입니다.

+0

NTLM은 요청에 일부 데이터를 포함하는 것보다 복잡합니다. 요청 응답 프로토콜입니다. http://blogs.msdn.com/b/chiranth/ archive/2013/09/21/ntlm-want-to-know-how-it-works.aspx 게시물 데이터에 자격 증명을 제공 할 수 있는지 의심 스럽습니다. – Soonts