SQL Server에 대한 사용 권한이있는 도메인 계정으로 실행되는 IIS에서 호스팅되는 웹 서비스가 있습니다. 아래에 언급 된 모든 사용자는이 SQL Server에 액세스 할 수 있습니다. 나는 서비스 계정으로 데이터베이스에 하나의 호출을 만들 수 있도록하고자하는 특정 서비스 방법 중호출자로 가장하면 데이터베이스에 연결할 수 없습니다 (명백한 사용 권한 문제는 아님)
<basicHttpBinding>
<binding name="SecureWebBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
... 등
: 여기
는 서비스 설정의 단편 다른 하나는 서비스를 호출 한 사용자입니다 (호출하는 사용자가 작성한 FILESTREAM 트랜잭션 컨텍스트를 반환합니다 - 사용자 별입니다). 첫 번째 호출은 완료되지만 다음과 같이 두 번째는 포장한다 :using (ServiceSecurityContext.Current.Impersonate())
{
using (var connection = new SqlConnection(...Integrated Security = true...)
{
connection.Open(); //<---Exception
을 WindowsIdentity.GetCurrent()
가 제대로 호출하는 사용자보다는 ImpersonationLevel == Identification
와 서비스 계정을 반환 Impersonate
에 전화 후.
처음 두 줄을 제거하면 작업이 서비스 계정의 ID로 완료됩니다. 물론 나중에 FILESTREAM에 대한 호출이 실패합니다.
이 위임 대 도용의 문제가 될 수 나타나면 SQL로 서버가 다른 상자에 있습니다. 그렇다면 어떻게 % # $ @을 위임합니까? – playtime222