Eu tenho um servidor de produção, que chamarei CONTOSO\MachineA , executando o SQL Server. Eu tenho um servidor de desenvolvimento, que eu vou chamar CONTOSO\MachineB , executando o IIS. Ambos os servidores estão executando o Windows Server 2008. Eu tenho um usuário de domínio, que chamarei de CONTOSO\MyAppSvc . Eu tenho dois registros CNAME, myapp => MachineA e myappdev => MachineB .
Meu objetivo é fazer com que os clientes (de intranet) se conectem ao IIS em MachineB e autenticação via autenticação do Windows e, em seguida, que o aplicativo represente e conecte-se ao SQL em MachineA como eles próprios.
O MachineB está executando outra instância do SQL Server, para testes, e verifiquei que o SQL está configurado para a autenticação de salto duplo executando SELECT * FROM [MachineA].[My App DB].App.SomeTable via SSMS (on MyWorkstation) => SQL Server (on MachineB) => SQL Server (on Machine A) .
MyApp no IIS em MachineB é configurado com Representação e Autenticação do Windows (somente negociação) e em execução em MyAppPool , que está sendo executado como MyAppSvc . system.webServer/ security/ authentication/ windowsAuthentication @useAppPoolCredentials é verdadeiro e @useKernelMode é falso. MachineB e MyAppSvc são confiáveis para delegação sem restrições. Existem dois SPNs em MyAppSvc : HTTP/myapp e HTTP/myapp.contoso.local .
Usando o wireshark, vejo o seguinte quando tento navegar em http://myapp/aPage :
- MyWorkstation = > MachineB
- GET / aPage
- Anfitrião: myapp
- MachineB = > MyWorkstation
- 401 Não autorizado
- Autenticar a WWW: negociar
- MyWorkstation = > MachineB
- GET / aPage
- Anfitrião: myapp
- Autorização: ticket:
- reino: CONTOSO.LOCAL
- sname: HTTP / MachineB.Contoso.local
- MachineB = > MyWorkstation
- 401 Não autorizado
- Autenticar-se na WWW:
- código de erro: ERR-MODIFIED
- reino: CONTOSO.LOCAL
- sname: MyAppSvc