2009-07-14 4 views
4

내가 제 3 자로부터 보고서를 요청하려는 그들이 POST를 통해 "기본 액세스 인증"이 필요합니다C#을 SSL 기본 액세스 인증

Your client application must use Basic Access Authentication 
to send the user name and password. 

사람이 올바른 방향으로 날 지점 수 있습니까?

편집 : 나는 this post을 보았지만 두 가지 대답이 있으며 내가해야 할 일이 무엇인지 또는 어느 것이 바람직한 방법인지는 확실치 않습니다.

답변

6

당신은 WebRequest 클래스를 사용하는 가정, 당신은 귀하의 요청에 CredentialCache를 첨부 :

+2

게시 참조하지만 그가 무엇을하고 있는지 필요할 수 있습니다. 프록시를 사용하는 경우 request.Proxy.Credentials를 통해 별도의 자격 증명을 보내야합니다. 또한 프록시를 사용하는 경우 PreAuthenticate를 사용할 수도 있고 사용하지 못할 수도 있습니다. 또한 반드시 CredentialCache를 수행 할 필요는 없습니다. request.Credentials = nc를 설정할 수 있습니다. 차이점이 무엇인지 모릅니다. –

+0

@Allen Basic으로 nc와 cc 사이에는 차이가 없습니다. 다이제스트를 사용하면 캐쉬가 올바른 일을합니다. 다이제스트를 한 번만 협상 한 다음 새로운 증가하는 'nc'(예 : 네트워크 신용이 아니라 다이제스트 NC)로 사전 인증하여 추가 왕복을 피할 수 있습니다. 그러므로 나는 네트워크 신임 이라기보다는 캐시를 사용하는 습관을 갖는 것이 낫다고 믿는다. –

2

기본 요점은 다음과 같이이다 :

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
request.Method = WebRequestMethods.Http.Get; 
request.Credentials = new NetworkCredential(username, password); 

하지만 때로는 요청 자격 증명의를 사용하여 문제가 대안은 요청 헤더에 인증 데이터를 추가하는 것입니다.

string authInfo = username + ":" + password; 
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); 
request.Headers["Authorization"] = "Basic " + authInfo; 

f 또는 자세한 내용은이 블로그가 해당 게시물에서 허용 대답 좀 어려운 방법을한다 이것은 당신이 원하는

http://charlie.cu.cc/2012/05/how-use-basic-http-authentication-c-web-request/