ASP.NET- 기본적으로 앱 풀 서비스 ID를 일시적으로 사칭 할 때 사용자를 가장합니다.

StackOverflow https://stackoverflow.com/questions/485160

문제

웹 응용 프로그램이 실행중인 동일한 서비스 ID에서 실행되는 SharePoint 사이트에서 일부 코드를 호출해야합니다. 기본적으로 SharePoint는 웹 페이지를 보는 사용자를 가장하며 사용자는 필요한 권한이 없습니다.

웹 애플리케이션 서비스 ID를 사용하여 일부 코드를 실행 한 다음 기본 사망자 사용으로 되돌아가는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

다른 팁

Nat가 옳습니다. spsecurity.runwithelevatedprivileges를 사용해야합니다. 표지 아래에서 Anthony가 언급 한 되돌아 오는 역전을 수행하지만 헬퍼 방법을 사용하는 것이 훨씬 쉽습니다. 다음 예제에서와 같이 인라인 대의원을 사용할 수 있습니다.

알아야 할 주요 사항은이 대의원이 별도의 응용 프로그램 영역에서 실행된다는 것입니다. 이는 기본적으로 SPSITE 또는 SPWEB를 사용하려는 것을 의미합니다.

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // Your are now inside the delegate
    // Anything provided within this block is marshaled across the app domain
    using (SPSite site = new SPSite("http://myserver/sites/mysite"))
    {
        using (SPWeb web= site.OpenWeb())
        {
            // Do stuff here
        }
    }
});

ASP에는 ASP 아래에 ASP가 응용 프로그램 풀의 ID에서 실행되도록 Win32의 RevertToself () 함수 (Advapi32.dll에 있음)를 호출하는 데 사용할 수있는 유틸리티 DLL이있었습니다.

물론 일단 거기에 있으면 스레드가 사용했던 원래의 정체성으로 돌아 가지 않지만 실제로는 문제가되지 않습니다. 현재 요청이 종료되면 다음 요청은 사용자 ID (또는 익명 사용자)에 따라 다시 실행됩니다.

ASP.NET의 Pinvoke와 똑같이 할 수는 있지만 프레임 워크에 어떤 영향을 미칠지 모르겠습니다. 나는 그것이 현재 요청에 대해서만 지속될 것이라고 확신합니다. 이 작업을 수행 할 표준 .NET API가 있다고 생각하지 않습니다.

쉬운! 호스팅 환경에서 제작 한 통화를 랩핑하십시오.

http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.impersonate.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top