Cómo hacer que la aplicación php requiera autenticación con tarjeta inteligente

StackOverflow https://stackoverflow.com/questions/1822119

  •  10-07-2019
  •  | 
  •  

Pregunta

Puedo hacer que el navegador fuerce la autenticación con una tarjeta inteligente, por ejemplo, una tarjeta de identificación cuando el archivo php está protegido con SSLVerifyClient en apache conf.

Ahora necesito mostrar index.php generalmente sin requerir autenticación con tarjeta inteligente y, a veces, esta misma página debe ser autenticada por el usuario.

doStuff();
if ($needed==1)
  authenticateUser();
doMoreStuff();

¿Qué debe contener authenticateUser () para que al llamarlo el navegador solicite el código PIN de la tarjeta inteligente?

¿Fue útil?

Solución

Estás mezclando las cosas un poquito.
authenticateUser (); se ejecuta en el servidor, mientras que la autenticación se produce en el cliente. No puede detenerse en medio de la ejecución de un script PHP para la autenticación de un cliente y luego continuar ejecutando el script PHP.

Como solución a su pregunta, esto podría funcionar en su caso:

if(authenticationNeeded)
{
   // redirect to a page that requires authentication that does what index was supposed to do.
   redirect('index_ssl.php');
}

Al usar .htaccess puede definir SSLVerifyClient require solo para algunos de los directorios / archivos.
El punto clave es: su servidor web (Apache en este caso) requiere un certificado de cliente para otorgar acceso a cualquier directorio / archivo para el que especifique SSLVerifyClient require .

En conclusión, no hay forma de hacer lo que quieres. Solo puede tener archivos / directorios que requieran o no un certificado de cliente. No hay forma de detenerse en medio de un archivo PHP para requerir un certificado de cliente, pero puede redirigirlo a uno que lo requiera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top