Páginas

Mostrando entradas con la etiqueta Apache. Mostrar todas las entradas
Mostrando entradas con la etiqueta Apache. Mostrar todas las entradas

2018/05/16

Autentificación y autorización en Apache (a grosso modo)

Autentificación en Apache2

Caso práctico: se quiere establecer seguridad para que solamente algunos usuarios puedan acceder a un fichero alojado en un servidor Apache2.

Antes de nada decir que las diferencias entre Autentificación/Autenticación, y Autorización son:

  • Autentificación: verificar si la persona o entidad que se intenta conectar o acceder a un sistema es quien dice ser.
  •  Autorización: acción por el que se concede permiso a una persona o entidad a realizar otras acciones (lectura, modificación, escritura…) sobre un recurso de un servidor.


Se pedía dos formas de acceder a la lectura de un fichero en el servidor:

     1) En forma de autentificación en el sitio web pasando nombre de usuario y password
     2) Verificar que la URL pasada para consultar el recurso posee un ‘token’ o clave en esta URL en forma de texto.



1)     Autentificación en web

Para este caso tenemos que hacer lo siguiente:

a)
            sudo htpasswd –c /etc/apache2/.htpasswd nombreusuario

A continuación nos pedirá el password y este se guardará en el archivo .htpasswd

Podemos verlo con el comando:

      cat /etc/apache2/.htpasswd

b)

      sudo vi /etc/apache2/sites-enabled/000-default.conf

Añadir:

<VirtualHost *:80>
<Directory "/var/www/html/mipagina/">
   AuthType Basic
   AuthName "Restricted Content"
   AuthUserFile /etc/apache2/.htpasswd
   Require valid-user
</Directory>
</VirtualHost>

Lo que aquí configuramos es la forma de autentificación y dónde están las contraseñas alojadas para poder validad el usuario

Luego reiniciar el servidor Apache:

sudo service apache2 restart

Si accedemos a la URL nos aparecerá la siguiente imagen de autentificación:



También decir que podríamos acceder de la siguiente forma para que se 'logueara' directamente:

http://userName:password@direccionIP/pagina.html




      2)      Autorización mediante una palabra pasada por parámetro a una URL

En este caso se pidió que se le pasará la palabra ‘token=nombreequipo’ del modo http://direccionIP/pagina.html?token=nombreequipo

      a)      Módulo rewrite

    Para esto utilicé el módulo rewrite que está incluido en  
    /etc/apache2/mods-available/rewrite.load

    Para activarlo hay que ejecutarlo siguiente:
   sudo a2enmod rewrite
   service apache2 restart

      b)      Fichero .htaccess

          Añadí el fichero .htaccess dentro de /var/www/html/miproyecto

     RewriteEngine On
     RewriteCond ${REQUEST_FILENAME} -f
     RewriteCond ${REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_URI} \.html$ [NC]
     RewriteCond %{QUERY_STRING} !^token=nombreequipo [NC]

     RewriteRule . /403.html

     [NC] es un flag que indica que puede escribirse tanto en mayúsculas como en mínusculas (No Case Sensitive, es decir, que no distinga mayúscula y minúsculas)

             La primera línea activa el módulo Rewrite, la segunda es que el fichero pasado en la url sea  efectivamente un fichero, la tercera es que no sea un directorio, la cuarta que la url acabe en .html, y la quinta línea, es que el parámetro pasado contenga la frase “token=nombreequipo”. Si alguna de estas condiciones no se cumplen, el servidor nos redirige a la página 403.html

             Para poder utilizar .htaccess hace falta establecer en apache2.conf dentro de la sección <Directory> la sentencia "AllowOverride All"
  

     <Directory /var/www/html/miproyecto/>
Options –Indexes
Options FollowSymLinks
AllowOverride All
Require all granted
     </Directory>

           Options –Indexes bloquea el listado de ficheros de la raíz cuando intentamos acceder al directorio padre del proyecto.

2011/11/28

Mensaje "Could not find driver" en PDO (Symfony y Propel)

Recibí este error al ejecutar una sentencia PDO bajo Propel y Symfony (en windows):

Uncaught exception 'PDOException' with message 'could not find driver'

Problema:

Después de ver varios foros, blogs, discusiones, stackoverflow.com, etc., no encontraba la solución a pesar de que este error tenía 108.000 entradas en Google.

Phpinfo() me mostraba que todo estaba bien excepto que en la sección PDO y en la fila de 'PDO drivers' había un mensaje 'no value'.

La instrucción de consola 'php -m' me decía que tenía los módulos PDO correspondientes bien cargados, ¿qué estaba mal?


Planteamiento:

El problema no venía de Propel, en todo caso, sería una incorrecta configuración de PDO, pero revisando el sitio oficial de PHP y MySql, pues era la BBDD con la que estaba trabajando, y viendo que los módulos PDO y pdo_mysql estaban cargados correctamente, el origen tenía que ser mi servidor Apache.


Solución:

Revisé la configuración que hay que hacer para instalar PHP5 con Apache. Tenía las siguientes líneas:

LoadModule php5_module "C:\php5.3.8\php5apache2_2.dll"
AddType application/x-httpd-php .php

pero, me faltaba la que solucionaría este problema:

añadir al final de httpd.conf la siguiente instrucción

 PHPIniDir "c:/php5.3.8" 

que es el directorio donde tengo alojado mi PHP.

Después no hay olvidarse de reiniciar Apache.





MsiInv o cómo obtener información del software instalado en tu ordenador (en Windows)

Pues como dice el título, si quieres saber realmente qué software tienes instalado en tu computadora con el sistema operativo Windows, recom...