A representação só funciona quando um usuário é específico

9

Estou tendo um problema ao acessar um serviço da Web com a aparência de um usuário especificado.

Obras:      <identity impersonate="true" userName="DOMAIN\USERNAME" password="MyPassword" / >

não funciona

<identity impersonate="true" /> 

Durante a depuração, usei o código abaixo para verificar se o domínio e o nome de usuário corretos estavam sendo usados.

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

Aqui está mais meu web.config

<authentication mode="Windows" />
<identity impersonate="true" /> 
<authorization>
  <allow users="*" />
  <deny users="?"/>
</authorization>

Estou entrando no prompt, imagem abaixo

Algumaidéiadeporquesófuncionaráquandoeuespecificarumusuárionoweb.config?EstoulogandocomomesmoDomain\Usernameesenhaqueeucoloqueino<identityimpersonate="true" userName="DOMAIN\USERNAME" password="MyPassword" / > . Eu tentei com várias contas e todas elas funcionam quando coloco suas credenciais no web.config , mas nenhum trabalho com a identidade definida como <identity impersonate="true" /> e o login.

EDITAR O servidor remoto retornou um erro: (403) Proibido.

EDIT 2 Tudo funciona bem durante a depuração e ao bater o serviço no servidor que contém o IIS está hospedado, eu tentei com várias contas e todos eles funcionam. Tudo está no mesmo domínio

    
por joetinger 07.05.2015 в 17:17
fonte

2 respostas

3

Observe o seguinte texto do link

  

Representar um usuário específico para todas as solicitações de um ASP.NET   Aplicação

     

Para representar um usuário específico para todas as solicitações em todas as páginas de um   Aplicação ASP.NET, você pode especificar o userName e senha   atributos na tag do arquivo Web.config para esse   aplicação. Por exemplo:                  Observação A identidade do processo que representa um usuário específico em um segmento deve ter o "Agir como parte do sistema operacional"   privilégio. Por padrão, o processo Aspnet_wp.exe é executado em um computador   conta chamada ASPNET. No entanto, essa conta não tem o necessário   privilégios para representar um usuário específico. Você recebe um erro   mensagem se você tentar representar um usuário específico. Essa informação   aplica-se apenas ao .NET Framework 1.0. Este privilégio não é obrigatório   para o .NET Framework 1.1.

     

Para contornar este problema, use um dos seguintes métodos: Conceder   o privilégio "Agir como parte do sistema operacional" para o ASPNET   conta (a conta menos privilegiada).

     

Nota Embora você possa usar esse método para contornar o problema,   A Microsoft não recomenda este método. Alterar a conta que o   O processo Aspnet_wp.exe é executado na conta do sistema no    seção de configuração do arquivo Machine.config.

Você pode configurar o processo Aspnet_wp.exe para ser executado como o usuário que você está tentando representar para obter os privilégios desejados.

Isso também foi discutido antes: Como você faz a representação no .NET

    
por Tylor Husske 07.05.2015 / 17:56
fonte
1

Pode ser o problema de autenticação de salto duplo do NTLM. Em suma, assegure-se de que os SPNs do Kerberos estejam configurados corretamente para que sejam usados em vez do NTLM. Este post do blog do MSDN tem uma ótima explicação.

link

Como alternativa, a autenticação básica ou de formulários também alcançará o que você deseja realizar. Isso ocorre porque o aplicativo terá as credenciais do usuário e, se configurado corretamente, poderá usá-las para acessar recursos de back-end.

Você também pode querer examinar a delegação do Kerberos. É uma maneira de restringir o segundo salto a apenas um recurso por meio do SPN.

    
por user2320464 20.05.2015 / 07:43
fonte