2014-02-06 2 views
0

VLC의 HTTP 인터페이스를 사용하여 현재 재생 목록 (GET /requests/playlist.xml)을 읽으려고합니다.HttpWebRequest를 사용하는 VLC 인증

이것은 이전 버전의 VLC에서 잘 작동했지만 최근 버전에서는 암호 옵션을 추가 한 다음 필수로 설정했습니다. (. 어떤 이름이 없다)

는 내가 처음이를 사용하여 시도 :

request.Credentials = new NetworkCredential("", password); 
request.PreAuthenticate = true; 

그러나이 401 오류를 리포팅 WebException이 발생했습니다. 트래픽 스누핑 (snooping)은 Authorization 헤더가없는 요청 하나를 보낸 다음 실제 인증을 시도하지 않고 즉시 오류를보고 한 것으로 나타났습니다. (VLC는 WWW-Authenticate 챌린지로 올바르게 응답했습니다.)

공백이 아닌 사용자 이름을 지정하면 이전과 같은 요청을 보내지 만 Authorization 헤더를 지정하는 두 번째 요청으로 후속 조치합니다 - VLC가 사용자 이름을 거부하기 때문에 실패합니다.

나는 마지막으로 명시 적으로 헤더를 설정하여 작동하도록 관리 :

var credential = Convert.ToBase64String(Encoding.Default.GetBytes(":" + password)); 
request.Headers[HttpRequestHeader.Authorization] = "Basic " + credential; 

하지만 이것은 원래 일을해야 뭔가처럼 보인다. 이 버그는 .NET (또는 WinInet)의 버그이며 빈 사용자 이름을 처리 할 수 ​​없습니다. 또는 그것은 사용자 이름을 사용하지 않는 VLC의 버그입니다. 또는 다른 코드를 설정해야하는 코드의 버그입니까?

답변

0

암호에 빈 문자열을 사용하고 있어도 동일한 문제가 발생했습니다. ILSpy과 같은 도구를 사용하면 사용중인 .NET 라이브러리를 디 컴파일하여 소스 코드를 볼 수 있습니다. 아무 것도 찾지 못했지만 .NET 문제인지 판단하기 위해이 코드를 사용할 수 있습니다. 이 문제는 Basic 및 Digest 권한을 사용하여 발생하므로 HttpWebRequest (사용중인 것으로 가정)를 살펴 보겠습니다.

지금 Authorization 헤더를 수동으로 설정하는 방법이 있습니다. Basic을 사용하고 있으므로 암호 보안에 신경 쓰면 이미 구현하지 않은 경우 SSL을 조사하는 것이 좋습니다.

관련 문제