Fix client certificate login #16

Merged
jandd merged 4 commits from fix-client-certificate-login into main 2024-05-20 10:35:31 +00:00

4 commits

Author SHA1 Message Date
44987425dc Merge branch 'main' into fix-client-certificate-login 2024-05-20 10:35:19 +00:00
9626e7f6fc Fix initial index for email SAN lookup 2024-05-05 21:32:20 +02:00
5f89d48036 Remove leftover header call 2024-05-05 21:22:16 +02:00
560be526c4 Fix client certificate login
This change fixes the client certificate login for cases where duplicate
serial numbers have been issued and recorded in the emailcerts table.

Email addresses from the client certificate are used as an additional
matching parameter.

- includes/lib/general.php got a new function
  get_email_addresses_from_client_cert to create an array of email
  addresses from the environment variables set by Apache httpd
- includes/loggedin.php and www/index.php use the new function to pass
  email addresses to the get_user_id_from_cert function
- get_user_id_from_cert in includes/lib/general.php has been enhanced to
  use a JOIN over the emailcerts, root_certs and email tables. All
  parameters are escaped via mysql_real_escape_string
- SQL errors in get_user_id_from_cert are now handled
- a match from get_user_id_from_cert is only returned when there is
  exactly one row in the result set

The code and the used query have been tested with Apache 2.4.10 and PHP
5.6 from Debian Jessie and a MariaDB 10.11 in strict mode using a
container based test setup to match the current production setup as
close as possible.
2024-05-05 20:08:53 +02:00