OSSP CVS Repository

ossp - ossp-pkg/sorp/BRAINSTORM.txt
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/sorp/BRAINSTORM.txt

OSSP sorp BRAINSTORMING
=======================

Currently:
- PESP: Apache+mod_rewrite+MySQL+mod_proxy
- IT Intranet: Apache+mod_rewrite+mod_proxy
- IS Intranet: Apache+mod_php+MySQL

Purposes:
- HTTPS to HTTP gateway
- HTTPS sticky pass-through
- user single-sign on & sticky authentication (user-id|client-cert -> session id)
- remote session tracking (session id -> user id + information) 
- load balancing over multiple backend servers
- backend response caching

Possibilities:
- Apache+mod_rewrite+mod_proxy+?
- Pound: http://www.apsis.ch/pound/
- Squid?
- Apache mod_proxy_add_forward: http://develooper.com/code/mpaf/
  Apache mod_rpad: http://stderr.net/apache/rpaf/
- Stunnel
- Symbion SSL Proxy: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/sslproxy/

Libraries:
- libcurl
- pth
- sa
- cfg

Prerequisites:
- polling abstraction library (kqueue, poll, select, /dev/poll, etc) for Pth and stand-alone
- SSL support for OSSP sa

Applications:
- NMIT PESP web portal frontend server
- IT Operations Intranet frontend server
- IS Operations North Europe Intranet frontend server
  - MOF
  - ChangeLog
  - Team.xmldb
  - ChangeLog

Tables
======

Session
-------
session_id       /* unique session id */
session_expire   /* expire time of session */
session_scope    /* scope/grade/level of session (login, visit, etc.) */
account_id       /* unique account id (attached user account) */

Account
-------
account_id       /* unique account id */
account_pw       /* password of account */
account_name     /* realname of account holder */
account_location /* realname of account holder */
...
groups...

Possible Approaches
===================

1. Extending SQUID+unofficial patches
   Squid selbst kann Reverse Proxy spielen, aber kein Content Rewriting.
   Fuer Content Rewriting gibt es aber unofficial Patches. Wir muessten
   also "nur" die Sign-On Funktionalitaet einbauen. Allerdings weisz ich
   nicht wie gut Squid bei HTTPS als _ORIGIN_ Server ist.

2. Extending Apache2.0+mod_proxy+mod_ssl
   mod_proxy kann Reverse Proxy spielen, mod_ssl HTTPS reden und der
   Kernel kann Content-Rewriting. Wir muessten also "nur" die Sign-On
   Funktionalitaet einbauen als ein mod_sorp. Allerdings ist der Apache
   2.0 ein dermassener Dreck IMHO (siehe angehaengte Mail), dasz dieser
   Ansatz zwar sexy klingt, aber irgendwie mir gar nicht recht gefaellt.

3. Extending Pound
   Pound ist ein recht junger Pthread-basierter HTTP/HTTPS Reverse
   Proxy, der recht klein und schnuckelig ist und auch leicht
   erweiterbar. Wir muessten das Content-Rewriting und die Sign-On
   Funktionalitaet einbauen. Allerdings bin ich mir bei der HTTP
   Compliance von Pound nicht so recht sicher.

4. Writing OSSP sorp
   Das ist der ambitionierteste Ansatz. Allerdings auch der sauberste
   und zukunftstraechtigste. Insbesondere weil wir im OSSP Projekt
   sowieso eine HTTP Komponente brauchen. Ausserdem haben wir mit den
   bereits existierenden OSSP Libraries schon fast alle Komponenten
   beisammen, die wir brauchen um eine eigene Loesung ohne zu groszen
   Aufwand stemmen zu koennen.


CVSTrac 2.0.1