From 5ff1e943a2b65a92c2b44725fd2d906a40c55118 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 22 Nov 2022 17:10:00 +0100 Subject: [pam] Support browser-based login --- pam.php | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'pam.php') diff --git a/pam.php b/pam.php index c5cb8fb..2a74bc3 100644 --- a/pam.php +++ b/pam.php @@ -1,17 +1,39 @@ .inc.php -function slxAutoloader($class) -{ - $file = 'inc/' . preg_replace('/[^a-z0-9]/', '', mb_strtolower($class)) . '.inc.php'; +spl_autoload_register(function ($class) { + $file = 'inc/' . preg_replace('/[^a-z0-9]/', '', strtolower($class)) . '.inc.php'; if (!file_exists($file)) return; require_once $file; -} -spl_autoload_register('slxAutoloader'); +}); require_once 'config.php'; +$action = Request::any('action'); + +// +// New version - browser based +// +if ($action === 'browser') { + // Browser requesting a token + Header('Location: shib/client_auth.php?token=' . (string)Request::any('token')); + exit; +} + +if ($action === 'verify') { + // pam stack on client trying to verify + $row = Database::queryFirst("SELECT username FROM client_token WHERE token = :token AND dateline > UNIX_TIMESTAMP() - 300", ['token' => (string)Request::any('token')]); + Header('Content-Type: text/plain; charset=utf-8'); + if ($row === false) { + die("ERROR=Invalid token"); + } + die("USER={$row['username']}"); +} + +// +// Old way, ECP +// Header('Content-Type: text/plain; charset=utf-8'); $res = Database::simpleQuery("SELECT suffix, authmethod FROM organization INNER JOIN organization_suffix USING(organizationid)"); -- cgit v1.2.3-55-g7522