Partager via


SharePoint 2010의 이중 인증 사이트에서 NTLM을 사용하여 REST 데이터 검색

최초 문서 게시일: 2011년 10월 27일 목요일

게시물 제목은 꽤 복잡해 보이지만 최종 솔루션은 간단합니다. 실제로 이 게시물에서 소개하는 솔루션은 이전의 두 게시물인 https://blogs.technet.com/b/speschka/archive/2010/09/25/retrieving-rest-data-in-a-claims-based-auth-site-in-sharepoint-2010.aspx(영문일 수 있음)https://blogs.msdn.com/b/sharepoint_ko/archive/2011/05/27/sharepoint-2010-om.aspx에서 소개한 기술을 조합한 것입니다. 관련 시나리오를 간략하게 설명하자면, SAML 인증을 사용하는 SharePoint 사이트에 대해 상태 확인 ping을 수행하는 솔루션을 만드는 것입니다. 이전에는 사이트에서 Windows 인증만 사용했으므로 문제가 없었는데, 여러 인증 유형(SAML 및 Windows)을 지원하는 사이트에서는 상태 확인 도구가 제대로 작동하지 않아 해당 문제를 해결하는 솔루션을 만드는 것이 목표입니다.

상태 확인은 사이트에 요청을 보내 데이터가 반환되는지를 확인하는 것입니다. 데이터 대신 오류 코드가 반환되는 경우 사이트 상태를 자세히 파악하면 됩니다. 사이트 상태를 확인하는 가장 쉬운 방법은 사이트의 REST 끝점인 listdata.svc를 호출하는 것입니다. 이 끝점은 항상 존재하기 때문에 다중 인증 사이트에서 NTLM을 사용하도록 끝점을 강제 지정하는 작업은 매우 쉬울 것으로 예상되었으며 실제로도 간단했습니다. 이 방식의 핵심은 HttpWebRequest를 작성한 다음 위의 두 번째 링크에 설명되어 있는 헤더를 추가하여 NTLM을 사용하도록 강제 지정하는 것입니다. 그러면 다음과 같이 단순한 코드 청크가 생성됩니다.

string endpoint = UrlTxt.Text + "/_vti_bin/listdata.svc";
    
//make a request to the REST interface for the data
HttpWebRequest webRqst = (HttpWebRequest)WebRequest.Create(endpoint);
webRqst.UseDefaultCredentials = true;
webRqst.Method = "GET";
webRqst.Accept = "*/*";
webRqst.KeepAlive = true;
webRqst.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");

//read the response now
HttpWebResponse webResp = webRqst.GetResponse() as HttpWebResponse;

//make the request and get the response
StreamReader theData = new StreamReader(webResp.GetResponseStream(), true);
string payload = theData.ReadToEnd();
theData.Close();
webResp.Close();

ResultsTxt.Text = payload;

위의 코드에서 보시다시피 요청을 작성하고 속성을 몇 개 설정한 다음 SharePoint에서 Windows 인증을 사용하도록 하는 헤더를 추가했습니다. 그런 후에 요청을 수행하면 작업이 정상적으로 진행됩니다. 매우 간단한 프로젝트이기는 하지만, 편리한 참조를 위해 전체 솔루션을 이 게시물에 첨부했습니다.

 

이 문서는 번역된 블로그 게시물입니다. 원본 문서는 Retrieving REST Data Using NTLM From a Dual Auth Site in SharePoint 2010을 참조하십시오.