Login per Handy Signatur
am 03.11.2015 - 08:58 Uhr in
Guten Morgen,
ein Kunde möchte das man sich per Handy Signatur bzw. Bürgerkarte einloggen kann. Jetzt habe ich mit dem österreichischen Anbieter „A Trust“ telefoniert und die gaben mir eine Url zu PHP Snippets wie dies einzubinden wäre. (http://labs.a-trust.at/developer/source.aspx)
Das Login Beispiel für einen PHP Login würde in diesem Fall so aussehen:
/================================================
//SERIENNUMMER
//================================================
echo "<tr><td><b>PHP VERSION < 4.0.1 ( $"."HTTP_SERVER_VARS['CERT_SERIALNUMBER'] ).</b></td></tr>";
echo "<tr><td>HEX ".$HTTP_SERVER_VARS["CERT_SERIALNUMBER"]."</td><tr>";
echo "<tr><td>DEC ".hexdec($HTTP_SERVER_VARS["CERT_SERIALNUMBER"])."</td><tr>";
echo "<tr><td> </td><tr>";
echo "<tr><td><b>PHP VERSION > 4.0.1 ( $"."_SERVER['CERT_SERIALNUMBER'] ).</b></td></tr>";
echo "<tr><td>HEX ".$_SERVER["CERT_SERIALNUMBER"]."</td><tr>";
echo "<tr><td>DEC ".hexdec($_SERVER["CERT_SERIALNUMBER"])."</td><tr>";
echo "<tr><td> </td><tr>";
//================================================
//Common Name
//================================================
$searchs="CN=";
$cnpos=strpos( $HTTP_SERVER_VARS["CERT_ISSUER"],$searchs);
$cn=substr( $HTTP_SERVER_VARS["CERT_ISSUER"],$cnpos + strlen($searchs));
echo "<tr><td><b>PHP VERSION < 4.0.1 ( $"."HTTP_SERVER_VARS['CERT_ISSUER'] ).</b></td></tr>";
echo "<tr><td>".$HTTP_SERVER_VARS["CERT_ISSUER"]."</td><tr>";
echo "<tr><td>".$cn."</td><tr>";
$searchs="CN=";
$cnpos=strpos( $_SERVER["CERT_ISSUER"],$searchs);
$cn=substr( $_SERVER["CERT_ISSUER"],$cnpos + strlen($searchs));
echo "<tr><td> </td><tr>";
echo "<tr><td><b>PHP VERSION > 4.0.1 ( $"."_SERVER['CERT_ISSUER'] ).</b></td></tr>";
echo "<tr><td>".$_SERVER["CERT_ISSUER"]."</td><tr>";
echo "<tr><td>".$cn."</td><tr>";
echo "<tr><td> </td><tr>";Mir ist jedoch nicht ganz klar wie ich dies in Drupal einbinden soll.
Hat jemand Erfahrungen damit oder könnte mir bitte eine Hilfestellung geben?
Danke!
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, wenn Du mit mehreren
am 03.11.2015 - 10:51 Uhr
Hallo,
wenn Du mit mehreren Zertifikaten arbeiten möchtest,
versuch es mal mit diesem Modul:
https://www.drupal.org/project/certificatelogin
Grüsse
Robert
Bei Client-Zertifikaten am besten Überprüfung durch Server
am 03.11.2015 - 11:07 Uhr
"Handy Signatur bzw. Bürgerkarte" ist mir jetzt noch nicht bekannt. Aber wenn es sich dabei tatsächlich um eine SSL/TLS-Client-Zertifikats-Lösung handelt, sollte die Haupt-Arbeit der Überprüfung beim Server liegen, der die Zertifikats-Infomation nebst Überprüfungs-Bestätigung an in die PHP-Umgebungsvariablen einarbeitet. Der zitierte Code lässt vermuten, daß es in diese Richtung geht.
Das certificatelogin-Module habe ich als zu unflexibel befunden und ein eigenes Konzept inkl. flexiblem Drupal-Modul geschrieben: https://www.drupal.org/project/clientcert
Hallo Robert, danke für
am 03.11.2015 - 11:12 Uhr
Hallo Robert,
danke für deinen Tipp!
Das Modul muss ich mir jetzt mal näher ansehen ob es denn auch die Integration der A Trust Software zulässt.
Grüße,
Mario
Hallo Carsten,danke für
am 03.11.2015 - 11:15 Uhr
Hallo Carsten,
danke für deine Antwort!
Ja die Hauptarbeit liegt serverseitig bei A Trust, dem Anbeiter der Überprüfung. Jedoch ist mir nicht ganz klar wie ich die Schnittstelle zwischen Drupal und denen herstellen soll.
Dein Modul sehe ich mir jetzt auch an.
Grüße,
Mario
Das läuft wahrscheinlich so ab,
am 03.11.2015 - 11:36 Uhr
wie bein anderen extrenlogins auch.
Du rufst den provider-server mit den gelieferten Zertifikatdaten per Socket auf, erhältst ein OK oder kein OK.
Den Rest macht der Serviceprovider.
SSLVerifyClient require > PHP-Umgebungsvariablen
am 03.11.2015 - 12:53 Uhr
Ja die Hauptarbeit liegt serverseitig bei A Trust, dem Anbeiter der Überprüfung. Jedoch ist mir nicht ganz klar wie ich die Schnittstelle zwischen Drupal und denen herstellen soll.
Dein Modul sehe ich mir jetzt auch an.
Die Brücke zwischen Server-Zertifikats-Überprüfung und Drupal liegt wie oben schon angedeutet in den PHP-Umgebungsvariablen. Mit diesen arbeiteten auch die Module certificatelogin und auch clientcert. Man benötigt auf einem Apache-Server (und nur damit kenne ich mich aus) das Flag "SSLVerifyClient require" um den Browser zu einer Authentifizierung zu bringen und hat nur dann Zugriff auf die Validierungsfunktionen per PHP.
Das Modul certificatelogin folgt neben einer anderen Art des Umgangs mit der user-Registrierung und dem Login aber vor allem der einer Strategie, daß es auf der gesamten Website ein "SSLVerifyClient require" verlangt. Diese Strategie wird zu Zeit auf cacert.org damit gelöst, daß eine Extra-Domain benutzt wird für das Zertifikats-Login. Das finde ich auch mehreren Gründen unpraktisch einerseits für Content-Strategien und einheitliche Links. Aber vor allem, da es anscheinend bei Webkit (getestet mit Safari und Chrome) SSL-Verbindungsfehler gibt. Und wenn man dann die Website komplett mit SSL/TLS betreiben möchte oder zumindest Webkit-Browser nicht ausschließen möchte für SSL/TLS-Nutzung, braucht es eine anderes Strategie. Dies habe ich mit einem separaten Pfad gelöst, der ausschließlich zum Certifikats-Login benutzt wird mit SSLVerifyClient require (siehe Modul-Seite). Das Modul bringt für den Aufruf eines solchen Pfads ein Rules-Event mit sowie Möglichkeiten die Certifikats-Informationen auszulesen und weiter zu verarbeiten inkl. Login-Daten.
Aufgrund dieser Rules-Flexibilität kann man damit ganz unterschiedliche Workflows umsetzen wie z.B. auch eine Two-Factor-Authentifizierung. Auf cacert.eu dient mein Modul dem Login und wird demnächst auch für weitere Funktionen wie Identitäts-Überprüfung usw. weiterentwickelt.