Windows 인증을 사용하는 Sharepoint 2010 응용 프로그램 내에 호스팅되는이 사용자 지정 WCF REST 서비스가 있습니다.Sharepoint 2010에서 Windows 인증으로 호스팅되는 사용자 지정 REST 서비스 사용
.NET 프로젝트 (예 : 콘솔 프로젝트)에서이 서비스를 사용해야하지만 자격 증명이 나를 미치게 만듭니다. 400 - bad request
또는 401 - unauthorized
개의 응답을 많이 받고 있습니다 (일부 인증 여부에 따라 다름).
제가 예를 들어 보겠습니다 :
siteUri
는 SP 사이트 (루트/홈페이지) 및 methodUri
의 URL 인 XML을 반환하는 서비스 메서드의 URL입니다.
다시 말해이 사이트는 Windows 인증을 받았습니다.
요청 오류
서버는 요청을 처리하는 중 오류가 발생했습니다 : 나는 브라우저를 열고
methodUri
에 가면 내가 얻을. 자세한 내용은 서버 로그를 참조하십시오.
그러나 나는 siteUri
, 셰어 홈 페이지가로드로 이동 한 후 내가 다시 methodUri
를 찾아 볼 수 있습니다 지금은 제대로 XML 응답을 얻는 경우에.
그래서 홈페이지를 탐색 할 때 웹 메소드에 요청할 때 사용되는 쿠키가 저장되어있는 것으로 보입니다. Fiddler에서 요청 확인하기 :
첫 번째 methodUri
요청은 400
코드로 실패하고 요청 헤더에 쿠키가 없습니다. 그런 다음 홈페이지 (siteUri
)를 탐색 할 때 인증 자체처럼 보이는 몇 가지 요청/응답이 있습니다. 응답 헤더가 포함
WWW-Authenticate: Negotiate oRswGaADCgEAoxIEEAEAAABDh+CIwTbjqQAAAAA=
Set-Cookie: WSS_KeepSessionAuthenticated={b89d78b2-063d-4ac4-810e-bde4e04a829e}; path=/
Persistent-Auth: true
을 그리고 마지막으로, methodUri
다시 첫 번째 응답을 검색 할 때하는 401 - 권한이 있지만 직후이 포함 또 다른 요청이 있음을 헤더 마침내 허용됩니다
Cookie: WSS_KeepSessionAuthenticated={b89d78b2-063d-4ac4-810e-bde4e04a829e}
Authorization: Negotiate oXcwdaADCgEBoloEWE5UTE1TU1AAAwAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAABXCiOIGAbEdAAAAD37/i76Dl3jNyK8bIRz57fmjEgQQAQAAAPUXp1AtIpqEAAAAAA==
및 서비스는 해당 XML로 응답합니다.
따라서 브라우저는 현 Windows 사용자를 인증하기 위해이 앞뒤 요청/응답을 처리 할만큼 똑똑합니다.
제 문제는 .NET에서 (3.5 또는 4) defautl 자격 증명을 사용하지 않고 어떻게 할 수 있습니까? 사용자 이름, pwd 및 도메인을 지정해야합니다.
5 일 동안이 문제를 해결하고 HttpWebRequest에서 기본 네트워크 자격 증명을 사용하여 작동하도록 만들었지 만 자격 증명을 수동으로 설정하면 (현재 로그인 한 사용자와 동일하게 사용) 작동하지 않습니다. .
오픈 소스 (루비, 파이썬) 배경에서 왔기 때문에이 모든 것이 불필요하게 지나치게 복잡해졌습니다 (Microsoft에 감사드립니다).
희망 추가 정보가 필요하면 분명히 부탁드립니다. 나는이 현상금으로 내 평판을 바칠 용의가있다.
감사합니다.
클라이언트 설정 방법에 대한 코드를 게시 할 수 있습니까? – Luis