Autenticação do Windows Express do IIS

245

Estou tentando usar o IIS Express com o VS2010 para hospedar um aplicativo silverlight. Modifiquei meu arquivo applicationhost.config para permitir a modificação das definições de configuração adequadas. Eu tenho o seguinte no meu web.config:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

Não estou sendo autenticado e minha chamada de serviço de domínio retorna um registro nulo como usuário. Consegui fazer isso funcionar depois de instalar o VS2010 SP1 BETA, mas estou tentando fazer isso funcionar apenas com o IIS Express.

Como habilito a autenticação do Windows para funcionar com o IIS Express. Há uma configuração que está faltando?

Marca
fonte

Respostas:

276

opção-1 :

edite o \My Documents\IISExpress\config\applicationhost.configarquivo e ative o windowsAuthentication, ou seja:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

opção-2 :

Desbloqueie a seção windowsAuthentication em \ Meus Documentos \ IISExpress \ config \ applicationhost.config da seguinte maneira

<add name="WindowsAuthenticationModule" lockItem="false" />

Altere as configurações de substituição dos tipos de autenticação necessários para 'Permitir'

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

Adicione o seguinte no web.config do aplicativo

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

O link abaixo pode ajudar: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

Após a instalação do VS 2010 SP1, a aplicação das opções 1 + 2 pode ser necessária para que a autenticação do Windows funcione. Além disso, pode ser necessário definir a autenticação anônima como false no IIS Express applicationhost.config:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

para o VS2015, o arquivo de configuração do IIS Express applicationhost pode estar localizado aqui:

$(solutionDir)\.vs\config\applicationhost.config

e a <UseGlobalApplicationHostFile>opção no arquivo do projeto seleciona o arquivo de configuração padrão ou específico da solução.

vikomall
fonte
Obrigado. Mas tentei as opções acima. Mas ainda não consigo usar a autenticação do Windows. Acho que vou ter que esperar pelo VS2010 / SP1 para obter essa funcionalidade.
Mark
3
a opção dois funcionou para mim. Demorou um pouco para encontrar este post!
TodK
Esta questão realmente não se aplica mais desde que o VS2010 sp1 foi lançado. Eu estava tentando fazê-lo funcionar sem instalar o sp1. Meu palpite é que o sp1 está fazendo algo para configurá-lo na primeira vez que eu simplesmente não conseguia descobrir. Posso seguir em frente e marcar esta resposta como correta, embora não seja realmente uma vez que o sp1 não está sendo instalado era o pré-requisito.
Mark
1
Valeu cara! O NTLM funcionou desativando a autenticação anônima.
Rob Angelier
4
No VS2015, a configuração do IIS Express foi movida para a estrutura da solução, especificamente $ (SolutionDir) \. Vs \ config \ applicationhost.config, infelizmente, não leva em consideração a configuração existente em MyDocuments \ IISExpress, para que todas as personalizações precisem ser lidas.
Tedford
401

O Visual Studio 2010 SP1 e 2012 adicionaram suporte ao IIS Express, eliminando a necessidade de editar colchetes angulares.

  1. Se você ainda não o fez, clique com o botão direito do mouse em um projeto com sabor da Web e selecione "Usar o IIS Express ...".
  2. Depois de concluído, selecione o projeto da web e pressione F4para focalizar o painel Propriedades.
  3. Defina a propriedade "Autenticação do Windows" como Ativada e a propriedade "Autenticação Anônima" como Desativada.

insira a descrição da imagem aqui

Acredito que esta solução seja superior às opções do vikomall.

  • A opção 1 é uma alteração global para todos os sites do IIS Express.
  • A opção nº 2 deixa o fragmento de desenvolvimento no web.config.
    • Além disso, provavelmente ocorrerá um erro quando implantado no IIS 7.5, a menos que você siga o procedimento "unlock" no applicationHost.config do servidor IIS.

A solução baseada na interface do usuário acima usa elementos de localização específicos do site no applicationHost.config do IIS Express, deixando o aplicativo intocado.

Mais informações aqui: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

roryWoods
fonte
5
Para enfatizar o que eu perdi - o menu de contexto e o Alt-Enteratalho das propriedades não substituem completamente os detalhes do painel de propriedades que permitem alterar se a autenticação do Windows está ativada ou não. Use F4ou clique no painel de propriedades para realmente ver as propriedades.
Kaleb Pederson
Eu lutei com essa tarefa por vários dias antes de começar de novo com este artigo: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Basicamente, desconsidere tudo na postagem original, comece novamente com " virgin "applicationhost.config e apenas ative as configurações conforme esta resposta. Finalmente eu recebo autenticação do Windows! Obrigado!!
DaveN59
Ele acaba alterando a configuração IISExpressWindowsAuthentication de 'enabled' para disabled 'no .csproj. <IISExpressWindowsAuthentication> desativada </ IISExpressWindowsAuthentication>
Cameron Taggart
7
Essas duas opções estão acinzentadas e desativadas para mim. Alguma idéia do porquê?
furador
1
as 2 opções estão acinzentadas porque você tem isso no seu IIS Express Config "e eles vão se desmanchar
Micah Armantrout 29/04
9

Com base na resposta de booij boy, verifique se você selecionou o recurso "autenticação do Windows" no Painel de Controle -> Programas -> Ativar ou desativar os recursos do Windows -> Serviços de Informações da Internet -> Serviços da World Wide Web -> Segurança

Além disso, parece haver uma grande diferença ao usar o Firefox ou o Internet Explorer. Depois de marcar a "autenticação do Windows", funciona para mim, mas apenas no IE.

bees73
fonte
2
E fazê-la funcionar no firefox: markmonica.com/2007/11/20/...
bees73
5

Além dessas ótimas respostas, no contexto de um ambiente de desenvolvimento IISExpress e para frustrar o infame erro "system.web/identity@impersonate", você pode simplesmente garantir que a seguinte configuração esteja no seu arquivo applicationhost.config .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

Isso permitirá mais flexibilidade durante o desenvolvimento e o teste, embora você tenha entendido as implicações do uso dessa configuração em um ambiente de produção antes de fazê-lo.

Publicações úteis:

Chiramisu
fonte
Aterrou nesta completamente por acidente, mas funcionou :-)
joshmcode
2

No Gerenciador do IIS, clique no seu site. Você precisa estar "na exibição de recursos" (em vez de "exibição de conteúdo")

Na seção IIS da "exibição de recursos", escolha o chamado "autenticação" e clique nele. Aqui você pode ativar a autenticação do Windows. Isso também é possível (por eu acho que em uma das sugestões no tópico) por uma configuração no web.config (...)

Mas talvez você tenha um web.config com o qual não deseja se envolver muito. Então esta discussão não seria muita ajuda, e é por isso que adicionei esta resposta.


fonte
0

Esta resposta pode ajudar se: 1) o site costumava funcionar com a autenticação do Windows antes de atualizar para o Visual Studio 2015 e 2) e o site está tentando carregar /login.aspx(mesmo que não exista esse arquivo no site).

Adicione as duas linhas a seguir à appSettingsseção do seu site Web.config.

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
Theophilus
fonte
0

Na mesma nota - VS 2015, .vs \ config \ applicationhost.config não visível ou indisponível.

Por padrão, a pasta .vs está oculta (pelo menos no meu caso).

Se você não conseguir encontrar a pasta .vs, siga as etapas abaixo.

  1. Clique com o botão direito do mouse na pasta Solução
  2. selecione 'Propriedades'
  3. Na Attributesseção, clique na Hiddencaixa de seleção (padrão desmarcado),
  4. depois clique no botão 'Aplicar'
  5. Aparecerá a janela de confirmação 'Opção Aplicar alterações a esta pasta, subpasta e arquivos' selecionada, clique em 'Ok'.

    Repita as etapas de 1 a 5, exceto step 3, desta vez, você precisa uncheckda opção 'Oculto' que você verificou anteriormente.

Agora deve poder ver a pasta .vs.

SatheeshN
fonte
0

Depois de fazer tudo nas respostas acima, descobri que não estava executando o Visual Studio como administrador. Depois de executar como administrador, o problema foi resolvido.

Alisson
fonte