2011-03-02 2 views
35

클레임 사용자가 SharePoint 2010에서 검색 가장을 수행해야합니다. 이러한 맥락에서 나는 이것을 Windows 계정으로 어떻게 작동시키는 지 먼저 밝히고 Claims/WIF에 대해 논의하고자합니다.클레임을 AD 계정에 매핑하지 않고 WIF/클레임 가장을 수행하려면 어떻게해야합니까?

윈도우 계정

내가 사용하는 "고전적인"Windows 통합 인증 된 사용자를 위해이 작업을 수행 할 수 있습니다

:

WindowsImpersonationContext wic = null; 
try 
{ 
    WindowsIdentity impersonatedUser = new WindowsIdentity("[email protected]"); 
    wic = impersonatedUser.Impersonate(); 

    // do impersonated work here... 
    // in my case this is a SharePoint KeywordQuery 
} 
finally 
{ 
    if (wic != null) 
    { 
     wic.Undo(); 
    } 
} 

위가 가장 된 계정을 작동하도록하는 현재와 같은 도메인에 있어야 사용자와 나는 응용 프로그램 풀 소유자가 다음과 같아야합니다.

    "도메인 기능 수준"이 Windows 2003 이상인 도메인의 도메인 계정누구든지 알아낼 수 있다면 방법 : 8,853,210

(주 로컬 상자에서 권한 "인증 후 클라이언트로 가장"한 지역의 상자 "운영 체제의 일부로 활동"권한을 가진 현재 계정이 나는 모든 귀를 나는 가장 된 계정과 동일한 도메인에 있어야 문제를 해결하기.)

주장 계정

내가 주장/WIF 계정과 동일한 기능을 수행하고 싶습니다. 이 계정들은 이 아니며은 반드시 AD 계정과 관련이 있습니다 (나는 그렇지 않다고 가정해야합니다).

STS에 특정 계정을 가장하고 해당 계정에 적절한 토큰을 제공하고 싶다고 말하는 방법이 있습니까? 내가 가장하고있는 사용자의 비밀번호가 없습니다.

인용문 SharePoint Brew WCF 호출을 통해 쿼리 프로세서를 호출하는 SharePoint 웹 프런트 엔드 (WFE)에서 실행되는 코드와 관련이 있습니다. WCF 호출이 가장 된 사용자의 컨텍스트에 있어야합니다.

WFE (Server1) 검색 웹 파트는 서비스 응용 프로그램 프록시와 통신합니다. 연결된 검색 서비스 응용 프로그램 프록시는 로컬 STS를 호출하여 사용자에 대한 SAML 토큰을 가져옵니다. SAML 토큰이 수집되면 검색 서비스 응용 프로그램 프록시는 WCF 호출을 통해 쿼리 프로세서를 실행하는 서버를 호출합니다. 나는이 서버를 "서버 2"라고 부를 것이다. 서버 2는 들어오는 요청을 수신하고 로컬 STS에 대해 SAML 토큰의 유효성을 검사합니다. 일단 확인되면 서버 2는 다양한 구성 요소에 연결하여 검색 결과를 수집, 병합 및 보안 조정합니다. 서버 2는 트리밍 된 검색 결과를 다시 서버 1로 전송 한 다음 사용자에게 표시합니다.

조금 더 많은 연구가 나를 ActAsOnBehalfOf으로 향하게하고 있습니다. 내가 OnBehalfOf를 사용하고 싶다고 생각하지만, 아직 작동하지 않을 것이라고 확신하지는 않습니다. 내가 찾은 참고 문헌은 다음과 같습니다. 모든 지침을 부탁드립니다..NET Framework Developer Center - Act As vs. On BehalfOf

  • Pablo M. Cibraro (aka Cibrax) blog - ActAs and OnBehalfOf support in WIF
  • Programming Windows Identity Foundation
    • 은 내가 이해에서
  • +0

    키워드 검색을 수행하는 데 사용하는 코드에 대한 제안 사항이 있습니까? 나는 약간의 도움으로 할 수 있었다 :) –

    답변

    9

    이 문제를 해결하기 위해 수개월을 보냈고 Microsoft SharePoint 및 WIF 엔지니어와 함께 오랜 시간을 보낸 후 이것이 가능하지 않다는 결론을 얻었습니다. 이 문제는 기본적으로 커크 (Kirk)가 암시하는 것입니다. 청구를 사용하여 가장 된 세션을 만들 때 (예 : SPClaim 생성 및 SPUser로 변환) SharePoint는 실제로 가장 된 세션을 생성하지 않습니다. 생성 된 세션은 실제로는 객체 모델에 의해서만 이해됩니다. 즉, 웹 응용 프로그램의 경계를 벗어나서 검색을 수행하면 다른 응용 프로그램 도메인/프로세스 공간으로 이동하기 때문에 효과적으로 이중 홉을 수행합니다.

    나는 eppesuig가 제안한 것과 유사한 것을 시도하고 그것이 작동하도록 만들지 못했습니다. 아마도 SharePoint가 받아 들일 수있는 신뢰할 수있는 클레임 ​​토큰을 생성 할 수있는 완전히 새로운 STS를 작성한 경우 ActAs 토큰을 사용하여이 문제를 해결할 수 있습니다 (SharePoint는 절대적으로 OnBehalfOf 토큰을 허용하지 않습니다). 그러나이를 수행하는 보안 의미는 오히려 관련되어 있습니다. 이론적으로는 작동하지만 사용자 정의 STS와 SharePoint를 혼합/신뢰하도록하는 것이 내 능력 밖인 것으로 판명되었습니다. 나는 다른 누군가가 그것을 시도하는 것을보고 싶다.

    0

    (나는 책을) 직접 다른 정체성하지만 당신을 사용할 수 없습니다. OnBehalfOf와 같은 함수를 사용하려면 위임을 처리 할 수있는 STS가 필요합니다. STS는 귀하의 신원을 확인한 다음 위임 된 신원을 사용하도록 허락합니다.