El modelo típico de sesiones es, tener una tabla de usuarios con sus contraseñas, comparar los valores enviados desde un formulario con esta tabla, si coinciden, dar acceso al usuario.
En mi caso, ya he hecho esto con CI. Estoy migrando un sistema (hecho desde 0 con clases) a CI, solo que lo especial de este sistema, es que, las sesiones se validan con usuario y contraseña de Google (Gmail), haciendo uso de Zend y una librería (desconozco Zend y por lo tanto si está bien llamado así) llamada Gdata, la cual me permite usar un formulario mío, enviar usuario y contraseña a mi servidor y en éste, enviar usando Zend, los datos a Gmail para que me regrese un TRUE o FALSE. Obvio, si es TRUE, reviso en mi BD si este usuario (sin contraseña, ya que esta se valida con Gmail) existe y posteriormente doy acceso, de lo contrario, no entra.
Esto es a grandes rasgos, espero su ayuda.
Saludos y gracias de antemano.