2009-11-30 11 views
5

Ich kann Browser machen, um Authentifizierung mit Chipkarte zB ID-Karte zu erzwingen, wenn PHP-Datei mit SSLVerifyClient in Apache conf geschützt wird.Wie man php Anwendung herstellt, um Smartcardauthentifizierung zu verlangen

Jetzt muss ich index.php normalerweise ohne Smartcard-Authentifizierung anzeigen und manchmal diese Seite muss Benutzer authentifiziert bekommen.

Was muss authenticateUser() enthalten, damit der Aufruf des Browsers den Smartcard-PIN-Code anfordert?

Antwort

4

Sie mischen die Dinge ein kleines bisschen.
authenticateUser(); läuft auf dem Server, während die Authentifizierung auf dem Client erfolgt. Sie können nicht mitten in der Ausführung eines PHP-Skripts für eine Client-Authentifizierung anhalten und dann das PHP-Skript weiter ausführen.

Als Lösung für Ihre Frage, könnte dies in Ihrem Fall:

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

von .htaccess verwenden Sie SSLVerifyClient require nur für einige der Verzeichnisse/Dateien definieren.
Der entscheidende Punkt ist: Ihr Webserver (Apache in diesem Fall) benötigt ein Client-Zertifikat, um Zugriff auf alle Verzeichnisse/Dateien zu gewähren, für die Sie SSLVerifyClient require angeben.

Abschließend gibt es keine Möglichkeit zu tun, was Sie wollen. Sie können nur Dateien/Verzeichnisse haben, die entweder ein Client-Zertifikat benötigen oder nicht. Es gibt keine Möglichkeit, mitten in einer PHP-Datei anzuhalten, um ein Client-Zertifikat zu verlangen, aber Sie können zu einem, der einen benötigt, umleiten.

+0

ok. Nachdem der Webserver die Authentifizierung durchgeführt hat, ist es in PHP möglich, alle Daten des Client-Zertifikats/der Authentifizierung zu überprüfen und/oder zu lesen. – Massimo