Como Executar o IIS Express sem Privilégios Administrativos

por Vaidy Gopalakrishnan

O IIS Express foi projetado para permitir que as tarefas de desenvolvimento e teste da Web mais comuns sejam executadas sem privilégios administrativos. Isso é muito útil em cenários em que os desenvolvedores não estão executando com direitos administrativos em seus computadores. Mesmo para usuários administrativos, esse recurso elimina a janela pop-up do Controle de Conta de Usuário (UAC) no Windows Vista e no Windows 7, impedindo que o fluxo de trabalho seja interrompido.

Este artigo explica o que os usuários padrão podem fazer com o IIS Express e descreve as tarefas limitadas aos administradores.

Executando sites localmente

Com o IIS Express, os usuários padrão podem executar sites localmente usando portas não reservadas (portas maiores que 1024). A associação de site padrão para o IIS Express é http://localhost:8080. Por padrão, o WebMatrix e o Visual Studio 2010 SP1 Beta também configuram sites para usar localhost e uma porta não reservada.

Por outro lado, privilégios administrativos são necessários para servir conteúdo para solicitações externas ou usando uma porta reservada, como a 80 ou 443.

Configurando sites e aplicativos

O IIS e o IIS Express usam um arquivo applicationhost.config que contém informações de configuração em todo o servidor. Com o IIS Express, cada usuário possui a própria cópia do applicationhost.config, o que significa que o usuário pode adicionar sites, remover sites, configurar diretórios virtuais e assim por diante sem privilégios especiais. O IIS Express procura um arquivo applicationhost.config na pasta Documentos (por exemplo, %userprofile%\Documents\IISExpress\configno Windows 7). O IIS Express também pode ser apontado para um arquivo applicationhost.config personalizado usando a opção de linha de comando /config. O resultado é que não é necessário ser um administrador para usar o IIS Express com o Visual Studio.

Como o IIS usa um arquivo applicationhost.config em todo o computador no qual os usuários padrão não podem gravar, as mesmas tarefas no IIS podem ser executadas somente por administradores. (Como o IIS normalmente é usado em computadores servidores, isso geralmente não é uma restrição do ponto de vista de um desenvolvedor individual.)

Iniciando e interrompendo sites

Com o IIS Express, um usuário padrão pode iniciar e parar seu servidor Web à vontade. Isso pode ser feito usando o WebMatrix e o Visual Studio 2010 SP1 Beta ou usando o executável de comando iisexpress.exe. Um aplicativo da bandeja do sistema do Windows também permite que os usuários naveguem e desliguem instâncias do IIS Express.

Com o IIS, os usuários não podem iniciar seu site diretamente. Em vez disso, o WAS (Serviço de Ativação do Processo de Trabalho) é responsável pela ativação de sites. Como o WAS é um serviço do sistema, somente os administradores podem iniciá-lo ou interrompê-lo.

Usando o SSL

A configuração do acesso pelo SSL (Secure Sockets Layer) requer privilégios administrativos no IIS Express, assim como no IIS. No entanto, o programa de instalação do IIS Express executa as seguintes tarefas que permitem que os usuários padrão usem SSL com o IIS Express:

  • Ele cria e instala automaticamente um certificado de servidor SSL autoassinado no armazenamento da máquina local.
  • Ele configura HTTP.SYS para reservar as portas 44300 a 44399 para SSL. As solicitações SSL de entrada que usam localhost e uma das portas no intervalo especificado são automaticamente associadas ao certificado autoassinado.

(HTTP.SYS é um componente do sistema operacional que lida com SSL para IIS e IIS Express. O programa de instalação é capaz de configurar HTTP.SYS porque a instalação é executada em privilégios elevados.)

Consequentemente, usar SSL para testar um site com o IIS Express é tão simples quanto adicionar uma associação como a seguinte ao elemento site em applicationhost.config:

<binding protocol="https" bindingInformation="*:44300:localhost" />

Isso funciona apenas para o tráfego local (solicitações localhost) e para o intervalo especificado de portas. Os privilégios de administrador são necessários para configurar um certificado SSL personalizado ou para executar SSL usando uma porta fora do intervalo especificado.

Resumo

O IIS Express permite que usuários não administrativos executem as seguintes tarefas:

  • Execute um site localmente e use um número de porta maior que 1024.
  • Adicionar, remover e modificar sites, aplicativos e diretórios virtuais.
  • Inicie e pare o servidor Web.
  • Adicione suporte SSL para testar um site usando um certificado SSL autoassinado pré-instalado e uma porta entre 44300 e 44399.

Privilégios administrativos são necessários para executar as seguintes tarefas:

  • Use uma porta reservada, como a 80 ou 443.
  • Atenda solicitações de tráfego externo.
  • Configure um certificado SSL personalizado.
  • Execute o SSL usando uma porta fora do intervalo de 44300 a 44399.