Estou tentando definir uma conta de usuário de domínio como identidade do ApplicationPool no IIS 8 (Windows 2012). Ao tentar fazer isso usando o Console de gerenciamento do IIS, sempre recebo um erro:
o valor não cai dentro do esperado.
Ao tentar definir a identidade usando appcmd.exe, ele falha no comando que define o nome de usuário e a senha ou no comando que define apenas a senha. Definir o nome de usuário não é problema.
Tentando definir o nome de usuário e a senha [FAIL]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username /[name='AppPoolName'].processModel.password:P4ssW0rd
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
Tentando definir apenas o nome de usuário [SUCCESS]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
Tentando definir a senha após definir o nome de usuário com sucesso [FAIL]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
Adicionei o usuário do domínio ao grupo IIS_IUSRS e permiti "fazer logon como um serviço".
Alguma sugestão do que posso estar fazendo de errado?
Responder1
Eu tive o mesmo problema, mas não consegui deixar a senha em texto não criptografado, então procurei um pouco mais e encontrei este artigo: Identidade personalizada do pool de aplicativos do IIS: o valor não está dentro do intervalo esperado
A etapa principal para diagnosticar é observar os eventos certos:
Para descobrir como resolver isso, entrei no visualizador de eventos. Não havia nada no log do aplicativo, então fui para Logs de aplicativos e serviços => Microsoft => Windows => Configuração do IIS. Os logs aqui estão desabilitados por padrão, então eles devem ser habilitados. (Para fazer isso, clique com o botão direito no log e escolha Habilitar log.) Uma vez habilitado, execute novamente a tentativa de definir a identidade e atualize a visualização (painel Ações ou F5) e pronto!, agora temos mais algumas informações sobre o erro. Nos resultados houve dois erros (ID de evento 42 e 43).
Eu tive os mesmos erros de evento do artigo:
ID 42: Falha ao inicializar o provedor de criptografia 'IISWASOnlyAesProvider' em '\?\C:\windows\system32\inetsrv\config\applicationHost.config'. Por favor, verifique sua configuração.
ID 43: falha ao criptografar o atributo 'Microsoft.ApplicationHost.AesProtectedConfigurationProvider'.
Então eu fiz o seguinte:
- restaurar uma versão antiga do arquivo ConfigEncKey.key (para
c:\windows\System32\inetsrv\config
) - substitua a
<configProtectedData><providers>
seção por uma antiga (inc:\windows\System32\inetsrv\config\applicationHost.config
)
Então posso definir novamente uma identidade personalizada para o pool de aplicativos.
Responder2
Você pode obter a chave privada de outro servidor e simplesmente importá-la para este servidor, primeiro exportando uma chave de outro servidor IIS que funcione: C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -px "iisWasKey" "C:\temp\AESKeys.xml" -pri
Segundo, você pode restaurar essa chave na máquina quebrada (copie a chave para o outro servidor e coloque-a no mesmo lugar): C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -pi "iisWasKey" "C :\temp\AESKeys.xml"
Terceiro, você edita c:\windows\system32\inetsrv\applicationhost.config e usa a seção configprotecteddata do servidor em funcionamento conhecido para usar no lugar daquele que já está neste arquivo.
Seria semelhante a esta seção:
Se tudo correr bem, você poderá testá-lo criando um pool de aplicativos e, em seguida, acessar as configurações avançadas e executá-lo como DOMAIN\user ou algum outro usuário necessário.
Tony Trus
Responder3
Verifique as ligações dos aplicativos configurados neste pool de aplicativos, se eles tiverem alguma ligação incorreta, por exemplo. caracteres inválidos, espaço e assim por diante.
Responder4
Tente mudar /section:applicationPools
e /section:system.applicationHost/applicationPools
adicionar /commit:apphost
no final
appcmd set config /section:system.applicationHost/applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd /commit:apphost