Finalmente encontré la solución. El encabezado X-Forwarded-Proto debe establecerse; se utiliza para identificar el protocolo (HTTP o HTTPS) que un cliente usó para conectarse a tu proxy o balanceador de carga.
Dado que uso HAProxy como servidor proxy, tuve que agregar esta línea a mi configuración de HAProxy:
http-request set-header X-Forwarded-Proto https if { ssl_fc }
Ahora el inicio de sesión funciona correctamente incluso cuando “forzar HTTPS” está habilitado.