Servidor web IIS en Windows 2016 amb ASP.NET

19 abril 2016
Josep Ma Solanes 2

Disposar d’un servidor web IIS, basat en Internet Information Services, per allotjar i donar servei a aplicacions ASP.NET comença a ser molt habitual en els entorns empresarials. De fet, no només un, sinó van proliferant en grup en les nostres xarxes.

Aquests servidors ja són el suport vital de moltes aplicacions. Aplicacions que mitjançant un navegador web i l’adreça del servidor web, l’usuari ja hi pot treballar. De fet, crec que és la tendència natural de les aplicacions, abandonar els clients pesats, més monolítics dels sistemes operatius, per anar a entorns més oberts, universals i accessibles per a qualsevol dispositiu i des de qualsevol lloc. Avui dia, no tot és transformable directament al format web, les aplicacions més pesades o tasques concretes continuen utilitzant els clients pesats, però els nous projectes haurien d’abordar-se, en el possible, amb aquesta infraestructura.

Perquè la web funcioni, com he esmentat, es requereix d’un servei que la mantingui i gestioni. No n’hi ha prou en tenir els fitxers web, s’han de servir d’alguna forma i, en aquest cas, us explicaré com muntar el servidor web IIS, basat en Internet Information Services (IIS) sobre Microsoft Windows 2016 Server, que interpreti les aplicacions escrites amb ASP.NET.

Internet Information Services és el servidor web de Microsoft disponible des de la versió Windows NT 3.51, d’això fa molt de temps i ha plogut molt al respecte. No m’ho recordeu, que ens fem grans. És un entorn que, segurament pel temps que fa que hi treballo, sempre m’hi he trobat còmode. Tot és qüestió d’acostumar-se, tenir una necessitat i saber tocar l’entramat que hi pugui haver per a sota. És cert que el meu llenguatge de programació és el .NET i segurament d’aquí que m’hi trobi més còmode, però no per això s’ha de deixar de banda altres servidors web com poden ser Apache o Nginx.

Per on comencem? Per disposar d’un servidor amb Windows Server, 2016 amb entorn gràfic per comprendre millor el què estem fent. En sistemes productius us recomano utilitzar l’entorn core per aquest tipus de servei!

 

Instal·lar el servei de Internet Information Server

Per disposar del nostre servidor web IIS comencem instal·lant el servei. Des de l’Administrador del servidor, en el menú de la part superior dreta, clicar a Administrar > Afegir rols i característiques.

servidor-web-iis-001

Seleccionar la instal·lació basada en un rol o característica i clicar el botó Següent.

servidor-web-iis-002

Seleccionar el servidor on instal·lar el rol o característica i clicar el botó Següent.

servidor-web-iis-003

Del llistat de rols, marcar el piscu de servidor web (IIS). Se’ns demana, en una finestra a banda, afegir les eines d’administració, clicar el botó Afegir característica. Clicar el botó Següent per continuar.

servidor-web-iis-004

Del llistat de característiques, depèn la plataforma .NET que es necessiti per a executar l’aplicació Web. En el cas de les aplicacions heretades de ASP.NET 2.0 i 3 és necessari habilitar el .NET Framework 3.5 per suportar-les. Per assegurar el funcionament complet del servidor, marcar el piscu de la característica .NET Framework 3.5. I per les aplicacions amb la versió 4, desplegar el .NET Framework 4.6 i marcar el piscu ASP.NET 4.6. Clicar el botó Següent.

servidor-web-iis-005

S’inicia l’assistent de configuració del rol de servidor web IIS, clicar el botó Següent.

servidor-web-iis-006

Seleccionar les característiques que ha d’oferir el servidor web IIS. Com no, les justes i necessàries.

Com més característiques habilitem més exposem el servei. Per tant, si una cosa no es necessita no s’habilita!

La configuració que se’ns proposa ja serveix, fent alguna petita modificació:

Web Server
  Common HTTP features
    Default Document - OK
    Directory browsing - Millor no desplegar-la.
    HTTP Errors - OK
    Static Content - OK
    HTTP Redirection
    WebDAV Diagnostics
  Health and Diagnostics
    HTTP Logging - OK
    Custom Logging
    Logging Tools
    ODBC Logging
    Request Monitor
    Tracing
  Performance
    Static Content Compression - OK
    Dynamic Content Compression
  Security
    Request Filtering - OK
    Basic Authentication
    Centralized SSL Certificate Support
    Client Certificate Mapping Authentication
    Digest Authentication
    IIS Client Certificate Mapping Authentication
    IP and Domain Restrictions - OK
    URL Authorization
    Windows Authentication – OK per aplicacions d’Intranet
  Application Development
    .NET Extensibility 3.5 - OK
    .NET Extensibility 4.6 - OK
    Application Initialization
    ASP – Per aplicacions heretades de la versió 2.0 de .NET
    ASP.NET 3.5 - OK
    ASP.NET 4.6 - OK
    CGI
    ISAPI Extensions - OK
    ISAPI Filters - OK
    Server Side Includes
    WebSocket Protocol
  Management Tools
    IIS Management Console - OK

Clicar el botó Següent per continuar.

servidor-web-iis-007

Marcar el piscu de reiniciar el servidor, si és necessari, automàticament durant la instal·lació. Com que en aquest cas s’ha especificat la instal·lació del .NET Framework 3.5 és probable que es vulgui indicar la ruta de la ISO de instal·lació, sinó s’utilitzarà Internet per descarregar el paquet.

Clicar el botó Instal·lar per procedir a habilitar el servidor web IIS.

 

Acabada la instal·lació dels components necessaris, es reinicia l’equip i es torna a l’administrador del servidor, per acabar d’afegir les característiques necessàries fins que s’indica que la instal·lació s’ha completat. Clicar el botó Tancar.

servidor-web-iis-010

Ja es disposa d’un servidor web IIS operatiu. Des del servidor, amb un navegador web, es fa la crida a l’adreça http://localhost. El servidor web IIS ens dóna la benvinguda.

servidor-web-iis-014

 

Accedir a la consola del servidor web IIS

Des de l’administrador del servidor, al menú de la part superior dreta, clicar a Eines > Administrador de Internet Information Server (IIS).

servidor-web-iis-011

S’inicia la consola d’administració. A la part esquerra, trobem el servidor web IIS amb el grup d’aplicacions (ja veurem perquè serveixen) i els llocs web. A la dreta, les diferents opcions segons on ens trobem de la part esquerra: servidor, grups d’aplicacions, llocs web, etc…

servidor-web-iis-012

El lloc web que es crea per defecte s’ubica a la ruta: c:\Inetpub\wwwroot. Diguem que no és massa aconsellable deixar un lloc en producció en aquesta ruta. El normal és disposar d’un altre disc dur on allotjar el/s diferent/s lloc/s web i alerta amb els permisos que s’hi assignen, ja què d’ells pot dependre la seguretat del lloc web.

servidor-web-iis-013

 

Crear un lloc web en un servidor IIS

Amb l’Explorador de Windows crear una nova carpeta a l’arrel de l’altre disc dur, per exemple, principal i dues més (app1 i app2) per aplicacions. Botó dret a l’espai en blanc de l’arrel del disc dur, clicar a Nova i Carpeta. Per tenir les coses endreçades, dins es pot crear una carpeta per cada lloc web.

servidor-web-iis-015

Important els permisos que es concedeixen a aquesta carpeta, ja què té relació amb la seguretat de la web!

Comprovar els permisos de la carpeta arrel, botó dret damunt de Web Sites i clicar a Propietats.

servidor-web-iis-016

Clicar a la pestanya Seguretat.

servidor-web-iis-017

Es poden visualitzar els permisos per defecte del volum on s’ha creat la carpeta, anem a modificar-los una mica per allotjar una aplicació corporativa.
La idea és que l’arrel del lloc web sigui accessible per a tothom, sense necessitat de validar-se. El lloc web contindrà dues aplicacions (app1 i app2) en la què serà necessari la validació com usuari de Windows, amb pertinença a un grup de seguretat diferent per a cada aplicació.
Clicar el botó Avançades per canviar aquests permisos.

servidor-web-iis-018

Desactivar l’herència de permisos en aquesta carpeta. Clicar el botó Desactivar l’herència.

servidor-web-iis-019

Se’ns demana per convertir els permisos heretats en explícits o començar de nou. Per facilitar les coses, seleccionar Convertir els permisos heretats en explícits.

servidor-web-iis-020

Eliminar el grup d’usuaris del domini, seleccionar el grup i clicar el botó Eliminar.

servidor-web-iis-021

Afegir els usuaris identificats com accés anònim (usuari i grup) al servidor. Clicar el botó Afegir.

servidor-web-iis-022

Seleccionar l’objecte principal, millor cercar-lo amb el cercador clicant el botó Avançat i el botó Buscar ara. Localitzar el grup IIS_IUSRS i clicar el botó OK, a les dues finestres, per afegir-lo com a objecte principal.

servidor-web-iis-023

Deixar els permisos amb només LECTURA i EXECUCIÓ, LLISTAR CONTINGUT i LECTURA. Clicar el botó OK per continuar.

servidor-web-iis-024

Repetir el procés per l’objecte IUSR, corresponent a l’identificador de l’usuari anònim de Internet Information Server.

Acceptar les modificacions de permisos de la carpeta clicant el botó OK a les dues finestres que queden obertes.

servidor-web-iis-025

Comprovar els permisos de les carpetes de dins Web Sites. Han d’haver heretat les modificacions fetes a la carpeta principal. Botó dret damunt el nom de la carpeta, clicar Propietats. Pestanya Seguretat i ha d’aparèixer el grup IIS_IUSR i l’usuari IUSR, sense el grup de Usuaris del domini.

servidor-web-iis-026

Crear un fitxer de defecte per lloc web: default.htm, amb un contingut simple, per exemple:

<html>
  <head>
    <title>Welcome to IIS</title>
  </head>
  <body>
    <H1>Servidor Web Internet Information Server - IntraNET</H1>
      <H2><a href="/app1/">App1</a></H2>
      <H2><a href="/app2/">App2</a></H2>
  </body>
</html>

Tornar a la consola d’administració del servidor web IIS per crear el nou lloc web amb les dues aplicacions. Botó dret damunt el lloc existent per deixar-ho tot net i clicar a l’acció Esborrar, del plafó d’accions de la banda dreta, per eliminar-lo.

servidor-web-iis-027

Confirmar l’eliminació del lloc web. Tranquils, clicar el botó Si!

servidor-web-iis-028

Botó dret damunt la carpeta Llocs i seleccionar Afegir un lloc web.

servidor-web-iis-029

Indicar els paràmetres corresponents:

  • Nom del lloc, per exemple, Intranet.
  • Grup d’aplicacions. El sistema automàticament crea un nou grup d’aplicacions amb el nom del nou lloc web, deixem que el creï ja què és una bona pràctica aïllar l’execució d’aplicacions en grups així, si una aplicació es queda penjada, reiniciant el seu grup n’hi ha prou, sense posar en perill tot el servei.
  • Ruta física on allotjar el nou web. Indicar la ruta que correspongui. Seguint l’exemple pel nou lloc web (la unitat que correspongui \Web Sites\principal).
  • Protocol: http o https (aquest últim requereix del certificat corresponent).
  • Adreça IP: Si contesta per totes les adreces IP del servidor o només per una en concret.
  • Port: El port per on oferirà el servei. Recordar que el de defecte en entorn web és el TCP 80.
  • Nom de l’amfitrió. Si el servidor ha d’allotjar més un lloc web independent de l’altre, és necessari especificar l’adreça FQDN de cada lloc web per obrir el que correspongui. Si es deixa en blanc i els altres amb un nom especificat, sempre que es demana una adreça que no correspon als altres obrirà aquest.
  • Iniciar el lloc web immediatament després de crear-lo. Es pot marcar per posar en funcionament ja.

Clicar el botó OK quan tot sigui correcte.

servidor-web-iis-030

S’ha creat el nou lloc web!

servidor-web-iis-031

Comprovar que el sistema arrencarà la pàgina correcta? Clicar damunt el nou lloc web i a la banda dreta a la icona Document per defecte.

servidor-web-iis-032

Per seguretat, eliminar tots els fitxers que no corresponguin. En el cas de l’exemple, tots menys Default.htm. Seleccionar i al plafó d’accions de la banda dreta, clicar a Eliminar.

servidor-web-iis-033

Comprovar que el nou lloc web funciona. Amb el navegador accedir a l’adreça web del servidor (http://localhost). Apareix la pàgina que s’ha creat. Si us surt un error de permisos és que alguna cosa us heu deixat! Reviseu que hi tingueu el grup d’usuaris IIS_IUSR i l’usuari IUSR. Naturalment, els accessos a les dues aplicacions encara no funcionaran perquè no les hem creat.

servidor-web-iis-034

Tornant a la consola d’administració del servidor web IIS, botó dret damunt del lloc Web que s’acaba de crear i seleccionar Afegir aplicació.

servidor-web-iis-035

Indicar:

  • Àlies de l’aplicació, com ha de ser cridada.
  • Grup d’aplicacions. Per defecte agafarà l’herència del lloc principal. Si us convé se’n pot crear un de nou, ara o més endavant, segons el rendiment i problemes que pugui donar l’aplicació.
  • Ruta física on s’allotja l’aplicació. Seguint l’exemple, és la carpeta App1 que s’ha creat.
  • Precarregar l’aplicació. En aplicacions pesades pot ser convenient per una millor resposta de la web de cara a l’usuari final.

Clicar el botó OK quan tot sigui correcte.

servidor-web-iis-036

Seleccionar l’aplicació nova que s’acaba de crear. A la banda dreta, clicar a Document per defecte per canviar-lo a default.aspx.

servidor-web-iis-038

Clicar el botó Afegir per afegir el nom default.aspx. Seleccionar el nom Default.htm i clicar el botó Eliminar.

servidor-web-iis-039

Repetir el procés per App2.

servidor-web-iis-037

Per fer la prova de concepte, copiar el fitxer Default.htm de la carpeta arrel, modificar-lo lleugerament per indicar si es troba en una aplicació o en l’altra:

<html>
  <head>
   <title>Welcome to APP1</title>
  </head>
  <body>
   <H1>Servidor Web Internet Information Server - APP1</h1>
  </body>
</html>

I intentem accedir al lloc de l’aplicació, segurament ens trobarem amb una pàgina en blanc.

servidor-web-iis-041

El motiu? Que el servidor està buscant el fitxer .aspx en comptes de .htm. Tingueu-ho present! Canviar els noms dels fitxers per default.aspx, els dos llocs s’han de visualitzar correctament.

servidor-web-iis-042

Però aquesta no era pas la intenció, sinó que han de validar usuaris de Windows. Com? Traient de les propietats de seguretat de la carpeta l’usuari IUSR (recordo que correspon a l’anònim de Internet Information Server). Botó dret damunt de la carpeta que conté l’aplicació, clicar a Propietats. Clicar a la pestanya Seguretat. Clicar al botó Editar. Afegir el grup amb permisos per aquesta aplicació (en el meu cas APP1) i eliminar l’usuari anònim (IUSR) de Internet Information Server, seleccionant-lo i clicar el botó eliminar. Clicar OK a les finestres obertes per aplicar els canvis.

servidor-web-iis-043

Tornar a l’administrador de Internet Information Server. A la banda esquerra, seleccionar l’aplicació. De la banda dreta, clicar a la icona de Autenticació.

servidor-web-iis-044

Se’ns mostra els mètodes d’autenticació que permet el servidor. Els que s’han habilitat al donar d’alta el rol, sempre es poden modificar afegint-ne de més o eliminant els que ja no s’utilitzen. Ara ens hem de quedar amb l’autenticació anònima, que no demanarà nom d’usuari i és la que hi ha activada; i la de Windows que és la què volem activar. Si s’ha de demanar qualsevol tipus d’autenticació, sempre, s’ha de deshabilitar l’anònima perquè es faci aquesta validació.

servidor-web-iis-045

Botó dret damunt d’autenticació anònima i clicar a Desactivar per forçar que es demani un mètode d’autenticació per part del Internet Information Server.

servidor-web-iis-046

Seleccionar autenticació de Windows, botó dret i clicar a Activar. Comprovar ara és l’únic mètode acceptat.

servidor-web-iis-047

Si s’accedeix a l’aplicació web mitjançant un navegador de web des del propi servidor, o d’un equip del domini, aparentment no passa res, però per sota, el sistema està validant l’usuari que té la sessió iniciada de Windows a l’aplicació, és el què es coneix com el single sign-on.

servidor-web-iis-048

Per comprovar-ho, en el fitxer default.aspx que hi ha al directori de l’aplicació, afegir una línia perquè ens ensenyi el nom d’usuari logat:

<H2>Logon:
  <%Response.Write(HttpContext.Current.User.Identity.Name.Tostring())%>
</H2>

Si accedim de nou a la pàgina web se’ns mostra l’usuari amb el qual s’ha fet l’autenticació de la sessió HTTP i per tant es pot establir un nivell de permisos. Des del servidor, estant logats com administrador i com que aquest té permisos d’accés al directori mostra la pàgina correctament.

servidor-web-iis-049

En cas de fer-ho des d’un equip extern al del servidor Web o del domini (si s’utilitzen permisos de domini), a l’accedir a la web se’ns demana les credencials. Introduir les correctes per a l’aplicació.

servidor-web-iis-050

El sistema ens identifica correctament amb les credencials que s’acaben de proporcionar. Si l’usuari que té iniciada la sessió coincideix amb els permisos a l’aplicació no es demana cap credencial.

servidor-web-iis-051

Si s’està en un equip fora del domini, si s’intenta accedir a l’altra aplicació amb el primer usuari (usrapp1), que no hi té permís, al estar fora del domini, torna a demanar unes credencials vàlides. Si estigués al domini simplement no em deixaria entrar perquè està passant contínuament les credencials de l’usuari que ha iniciat sessió, sense poder-lo canviar.

servidor-web-iis-052

Canviant d’usuari permet accedir a l’altre aplicació, ensenyant el nom d’usuari correcte.

servidor-web-iis-053

A partir d’aquí ja depèn de la necessitat de cada aplicació. Diguem que hem posat els fonaments per construir qualsevol cosa a sobre.

 

T’ha agradat l’article? El pots compartir a les xarxes socials. També pots deixar la teva opinió, comentari o suggeriment. Gràcies!

 

Similar Posts by The Author:

 

2 comentaris per a
“Servidor web IIS en Windows 2016 amb ASP.NET”

  1. confos pel significat DOMINI.
    es una xarxa local amb OS server? o voleu dir ? .net o .cat
    si son diferents , com passar el meu site web local a un domini internet . es posible? i com
    Merci, soc un DUMMY.

     
    1. En aquest cas es tracta del domini de seguretat al estar en un context de validació d’usuari en les aplicacions Web. La resposta correcte és xarxa local amb OS server.

      Els dominis .net o .cat, són dominis de resolució de noms DNS, és per trobar el servidor a la xarxa, no per autenticar usuaris.

      No entenc massa la últim pregunta. Si disposo d’un servidor intern, en una xarxa local, naturalment, no es resoldrà des dels equips que hi ha a Internet, perquè l’àmbit de resolució de noms només es produeix dins la xarxa local. En cas de voler fer accessible el servidor web és necessari publicar el/s port/s, en aquest cas el TCP 80, en l’encaminador (o millor el tallafocs) de la xarxa. Un cop fet això, cal donar d’alta el registre de host o CNAME en el DNS públic del domini d’Internet (per exemple http://www.prova.com apuntant a la IP pública de la connexió). Pots revisar les entrades referents a configuració de tallafocs: https://www.jmsolanes.net/tallafocs/ i https://www.jmsolanes.net/petit-tallafocs-amb-linux/ .

      Salut,

       
Els comentaris estan tancats.