SSO로서 NTLM 및 사칭 관리자로서 특정 조치 수행
-
22-07-2019 - |
문제
다음을 달성하기 위해 IIS / ASP.NET 설정의 올바른 조합을 우연히 발견 할 수 없습니다.
- 모든 사용자 내부 도메인 IIS 사이트에 액세스 할 수 있어야합니다 (w/ ntlm 인증). ASP.NET 응용 프로그램은 현재 사용자의 사용자 이름을 얻을 수 있어야합니다 (일명. 사용자는 스스로 인증됩니다).
- 실행중인 ASP.NET 응용 프로그램이 가능해야합니다 관리자 계정에 따라 특정 조치를 실행합니다. 예를 들어, Active Directory 변경 또는 제한된 위치에 파일을 작성합니다.
아마도 추측 할 수는 있지만 응용 프로그램의 요점은 웹 응용 프로그램을 통해 "일반"사용자가 특정 "관리"변경을 할 수있게하는 것입니다. 동시에 변경 사항은 "일반"사용자 계정으로 로그인해야하므로 인증 된 사용자의 자격 증명을 잃고 싶지 않습니다.
IIS6의 특정 설정을 찾고 #1 (사이트에 도착하여 사이트에 도달하고 자체로 인증 될 도메인의 모든 사용자)를 달성 할 수 있습니다.
해결책
적어도 두 가지 옵션이 있습니다.
둘 다 일반적으로 :
- IIS 설정은 Windows 인증으로 설정되어야합니다.
- 사용자의 ID는 HTTPContext에서 읽을 수 있습니다.
옵션 1:
- 사정 = 거짓을 설정합니다
- 애플리케이션 풀의 ID를 광고 변경을 할 권리가있는 사용자에게 설정
- 위의 사용자를 IIS_WPG 그룹에 추가하십시오
Option 2:
- 광고 변경을 할 때 광고를 변경할 수있는 사용자의 스레드 신분을 설정합니다.
옵션 2의 경우 여기에 가장 한 사용자를 사용하는 코드 예제가 있습니다.
http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.aspx
다른 팁
보안 관점에서 가장 좋은 방법은 모든 관리 작업을 자체 웹 서비스로 분리하는 것입니다. 사이트의 정상 파트는 다른 클라이언트와 마찬가지로 LocalHost Call이라도 웹 서비스를 호출하여 관리 작업을 수행합니다.
이렇게하면 일반 앱 풀 (가장 한)과 특권 앱 풀 (관리자)을 격리합니다.
마지막으로 이것은 아마도 머리카락을 나누는 것일 수도 있지만 NTLM이 허용하지 않기 때문에 NTLM이 아닌 Kerberos 인증이어야합니다. 제한된 대표단 그리고 '정상'응용 프로그램이 액세스하는 경우 대표단에 활성화되어야합니다. 아무것 로컬 IIS 호스트 외부.