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?

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.


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


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.


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:


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.


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"/>

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.


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.