IIS - 401.3 - Não autorizado

92

Estou tentando começar a usar o IIS. Criei um novo site no IIS Manager, mapeei-o para uma pasta em meu sistema de arquivos e adicionei index.html à pasta. Eu configurei a porta para 85 para este site. Quando tento acessar http://localhost:85/index.html, recebo a seguinte mensagem de erro:

401.3 - não autorizado - Você não tem permissão para ver este diretório ou página devido à configuração da lista de controle de acesso (ACL) ou às configurações de criptografia para este recurso no servidor web.

Dei acesso de leitura a todos na pasta e tentei novamente. Eu poderia então acessar a página.

Em seguida, comparei as propriedades da minha pasta com as do wwwroot. Descobri que wwwroot tinha acesso de leitura no IIS_IUSRS ... Quando fiz o mesmo na minha pasta e tentei novamente, recebi o erro acima novamente. Verifiquei se o acesso anônimo está habilitado por padrão, mas ainda recebo este erro.

Por que isso acontece? Qual é a maneira correta de resolver o problema?

Aadith Ramia
fonte

Respostas:

168

Lutei com esse mesmo problema por vários dias. Isso pode ser resolvido modificando as propriedades de acesso do usuário de segurança da pasta do sistema de arquivos na qual seu site está mapeado. Mas IIS_IUSRS não é a única conta que você deve autorizar.

  • No console de gerenciamento do IIS, na parte Autenticação da configuração do seu site, modifique a linha "Autenticação anônima" e verifique a conta definida como "Usuário específico" (o meu é IUSR).
  • Conceda permissão de leitura e execução na pasta do seu site para a conta listada como usuário específico.

OU

  • No console de gerenciamento do IIS, na parte Autenticação da configuração do seu site, modifique a linha "Autenticação anônima" selecionando "Identidade do pool de aplicativos" em vez de "Usuário específico".
groch
fonte
6
Descobri que o anon authentic com "Application Pool Identity" funcionava, mas por algum motivo não consegui fazê-lo funcionar com IUSR. Obrigado.
fortboise
5
A lógica por trás disso é que, por padrão, o site usa autenticação anônima e IUSR é a conta anônima. Portanto, o IIS usa a conta IUSR para acessar o sistema de arquivos (caminho físico do site), o que pode não funcionar sempre (já que muitos sistemas de arquivos não aceitam IUSR). Essa é a causa de 401,3. Alterando o acesso ao sistema de arquivos (conceda a essa conta acesso aos arquivos) ou alterando a conta anônima para a identidade do pool (a identidade do pool está em IIS_IUSRS, que geralmente tem acesso aos arquivos), o IIS deve ter permissões suficientes para acessar os arquivos.
Lex Li
58

Aqui está o que funcionou para mim.

  1. Defina a identidade do pool de aplicativos para uma conta que pode receber permissões para uma pasta.
  2. Certifique-se de que o diretório de origem e todos os arquivos relacionados tenham direitos de leitura para os arquivos da conta atribuída à propriedade de identidade do pool de aplicativos
  3. No IIS, no nó raiz do servidor, defina o usuário anônimo para herdar da identidade do pool de aplicativos. (Esta foi a parte com a qual eu lutei)

Para definir o servidor anônimo para herdar da identidade do pool de aplicativos, faça o seguinte.

  • Abra o Gerenciador do IIS (inetmgr)
  • No painel esquerdo, selecione o nó raiz (nome do host do servidor)
  • No painel do meio, abra o miniaplicativo 'Autenticação'
  • Destaque 'Autenticação Anônima'
  • No painel direito, selecione 'Editar ...' (uma caixa de diálogo deve ser aberta)
  • selecione 'Identidade do pool de aplicativos'
barrypicker
fonte
9
# 3) CORRIGIDO MEU PROBLEMA: No IIS, no nó raiz do servidor, defina o usuário anônimo para herdar da identidade do pool de aplicativos. (Esta foi a parte com a qual eu lutei)
Ravi Ram
Sei que você não deve escrever comentários de "obrigado", mas sinto que preciso expressar minha gratidão. De jeito nenhum eu teria descoberto isso.
Jonny Cook
@RaviRam: Explique as etapas que você seguiu. Passo a passo como iniciante. O que você quer dizer com "n IIS, no nó raiz do servidor, definir usuário anônimo para herdar da identidade do pool de aplicativos". Por favor, ajude.
Inquebrável de
@RaviRam - execute o comando "inetmgr.exe" e a tela de administração do IIS aparecerá. A partir disso, siga as etapas descritas em minha resposta. Você provavelmente precisará executar o comando como administrador. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker
Conforme mencionado em outra resposta, descobri que você não precisa alterar as configurações de autenticação anon no nível raiz - você pode alterar essa configuração no nível do site ou do diretório virtual também
Jaycer
15

TL; DR;

Na maioria dos casos, conceder acesso à (s) seguinte (s) conta (s) (uma | ambas) será suficiente:

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

com direitos de acesso :

  1. Ler e executar
  2. Listar o conteúdo da pasta
  3. Ler

É isso aí!

Continue lendo para uma explicação mais detalhada ...


  1. Abra o IIS e selecione seu aplicativo .
  2. No lado direito, clique em Autenticação .
  3. Selecione " Autenticação anônima " aqui.
  4. A seguinte caixa de diálogo é exibida.

insira a descrição da imagem aqui

Conceda acesso à ACL da pasta do aplicativo da web, dependendo do que for selecionado na foto acima:

  • Usuário específico : conceder acesso para ambosIUSR(no meu caso) +IIS AppPool\DefaultAppPool
  • Identidade do pool de aplicativos : conceder acessoIIS AppPool\DefaultAppPoolapenaspara

IIS AppPool\DefaultAppPool account é a conta AppPool padrão para novos aplicativos da Web do IIS; se você tiver definido uma conta personalizada, use a personalizada.


Conceda as seguintes permissões à (s) conta (s):

  1. Read & Execute
  2. List folder contents
  3. Read

insira a descrição da imagem aqui

Legendas
fonte
13

Já que você está lidando com conteúdo estático ...

Na pasta que atua como raiz do seu site - se você clicar com o botão direito do mouse em> propriedades> segurança, "Usuários" aparecerá na lista? se não, clique em "Adicionar ..." e digite, certifique-se de clicar em "Aplicar" quando terminar.

joelmdev
fonte
1

Apenas no caso de alguém topar com isso. Solucionei todas essas etapas e descobri que descompactei alguns arquivos de um MAC, a Microsoft automaticamente sem qualquer notificação Criptografou os arquivos. Depois de horas tentando definir as permissões da pasta, entrei e vi que os nomes dos arquivos estavam verdes, o que significa que os arquivos foram criptografados e o IIS irá gerar o mesmo erro, mesmo se as permissões da pasta estiverem corretas.

Kris
fonte
Gastou muito tempo exatamente neste mesmo assunto. Simplesmente aqui para lamentar. Acabei aqui procurando IIS e acesso ao EFS, mas sua resposta me deu uma pista sobre a causa raiz do meu problema - um arquivo zip expandido de um Mac. Meu cenário específico era um problema em que o ASP.NET Core hospedado em processo no IIS não era iniciado - sem mensagens de log de eventos, sem logs de stdout etc. O acesso via localhost gerava uma mensagem de erro informando que web.config era inválido, mas não mostrava origem. Obviamente, o arquivo estava acessível, mas o conteúdo não pôde ser lido.
Aaron
1
  1. Crie um novo site, clique com o botão direito na pasta Sites e, em seguida, clique em adicionar site
  2. Digite o nome do site.
  3. Selecione o caminho físico
  4. Selecione o endereço IP
  5. Mudar porta
  6. Clique OK
  7. Vá para pools de aplicativos
  8. Selecione o pool de sites
  9. Clique com o botão direito do mouse em Configurações avançadas
  10. Alterar a versão .Net CLR para "No Manage Code"
  11. Altere a identidade para "ApplicationPoolIdentity"
  12. Vá para a página inicial do site e clique em "Autenticação"
  13. Clique com o botão direito em AnonymousAuthentication e clique em "Editar"
  14. Selecione a identidade do pool de aplicativos
  15. Clique OK
  16. estrondo!

para rotas, adicione um web.config

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
Aevi Rontos
fonte
0

Outro problema que pode surgir relacionado ao recebimento de mensagens não autorizadas está relacionado aos provedores usados ​​na configuração de autenticação do IIS. No meu caso, tive esse problema se definir o provedor de autenticação do Windows como "Negociar". Depois de selecionar a opção "NTLM", o acesso foi concedido.

Mais informações sobre provedores de autenticação

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/

nicoTaccari
fonte
0

Habilite os seguintes itens no Windows 2012 R2

insira a descrição da imagem aqui

user2907940
fonte
0

Se você estiver trabalhando com autenticação de pool de aplicativos (em vez de IUSR), o que deveria ser feito, esta lista de verificações de Jean Sun é a melhor que pude encontrar para lidar com erros 401 no IIS:


Abra o Gerenciador do IIS, navegue até seu site ou pasta de aplicativo onde o site está implantado.

  1. Abra Configurações avançadas (está no painel Ações à direita).
  2. Anote o nome do pool de aplicativos e feche esta janela
  3. Clique duas vezes no ícone de autenticação para abrir as configurações de autenticação
  4. Desativar autenticação do Windows
  5. Clique com o botão direito em Autenticação Anônima e clique em Editar
  6. Escolha o botão de opção Identidade do pool de aplicativos e clique em OK
  7. Selecione o nó Pools de aplicativos na árvore do gerenciador do IIS à esquerda e selecione o nome do Pool de aplicativos que você anotou na etapa 3
  8. Clique com o botão direito e selecione Configurações avançadas
  9. Expanda as configurações do Modelo de Processo e escolha ApplicationPoolIdentity na lista suspensa "Conta interna" e clique em OK.
  10. Clique em OK novamente para salvar e descartar a página de configurações avançadas do Pool de aplicativos
  11. Abra uma linha de comando do Administrador (clique com o botão direito do mouse no ícone do CMD e selecione "Executar como Administrador". Estará em algum lugar do menu iniciar, provavelmente em Acessórios.
  12. Execute o seguinte comando:

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    Por exemplo:

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

Especialmente as etapas 5 e 6 são freqüentemente esquecidas e raramente mencionadas na web.

Jpsy
fonte