A multi-provider authentication abstraction layer for PHP