lunes, 9 de enero de 2012

squid autenticando con IMAP

El archiconocido servidor proxy squid, tiene muchas maneras de autenticar. Mucha gente lo hace contra mySQL o contra ldap. Gente muy obtusa y estrambótica (como yo) suelen usar métodos de autenticación mas sencillos que ldap. Por ejemplo, si ya tenemos un server de correo, porque usar otro? Acá conozco algunos coterraneos míos que montan un ldap para el server de correo y otro para el de navegación. GENIAL! :-D Es como decir, pasar trabajo al cuadrado.



Bueno en cuestión, la idea es simple y la implementación sencilla. El server proxy, usará como autenticador externo una aplicación que consultara un servidor imap. El autenticador de squid quedaría así.

auth_param basic program /usr/local/sbin/imap.py
auth_param basic children 5
auth_param basic realm Autenticacion de LEX-SA para la navegacion
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED

El script imap.py lo pueden recoger en este link. De todas formas lo pegare aquí:


#!/usr/bin/env python
from imaplib import IMAP4
import sys
#IMAP server against which we authenticate
server="127.0.0.1"
port=143
while 1:
 line=sys.stdin.readline()[:-1]
 [user,password]=line.split(' ')
 p=IMAP4(server,port)
 try:
  p.login(user,password)
 except:
  sys.stderr.write("ERR authenticating %s\n"%user)
  sys.stdout.write("ERR\n")
  sys.stdout.flush()
  continue
 sys.stderr.write("OK authenticated %s\n"%user)
 sys.stdout.write("OK\n")
 sys.stdout.flush()

3 comentarios:

  1. si quicieras que solo un cierto y determinado grupo de usuario navegase, entonces

    # el usuario username navega
    acl usuario proxy_auth username
    http_reply_access allow usuario

    ResponderEliminar
  2. Me ha sido muy util.

    Gracias. Luis.

    ResponderEliminar

Si vas a decir groserias, aclara el significado para los que no somos de tu mismo país.