Sie finden im PHP API Archiv neben der API-Klasse ‚SecSignIDApi.php‘ ebenfalls ein voll funktionsfähiges Beispiel zur PHP Zwei-Faktor-Authentifizierung mit SecSign ID API. Darüber hinaus finden Sie alle PHP-Quelltexte auf der SecSign GitHub-Seite.
Der eigentliche Umfang der API sind lediglich zwei Klassen mit Hilfe dessen sich die Zwei-Faktor-Authentifizierung (kurz 2FA) realisieren lässt:
SecSignIDAPI: die Klasse beinhaltet alle Funktionen zum Er- und Abfragen einer sogenannten Authentifizierungs-Session
AuthSession: die Klasse beinhaltet alle Informationen einer sogenannten Authentifizierungs-Session (kurz eben AuthSession)
Wir haben ein unkompliziertes Composer Paket für Sie vorbereitet, für eine noch einfachere Integration der SecSign ID Zwei-Faktor Authentifizierung.
Composer Bundle
Laden Sie die SecSign ID PHP API herunter und fügen Sie sie ihrem PHP-Projekt hinzu, beziehungsweise binden Sie sie in die entsprechenden PHP-Dateien ein.
include ('SecSignIDApi.php');
Fordern Sie vom ID Server eine neue Sitzung (Authentitifizierungs-Session) an. Um eine Sitzung anzufordern muss der Name bzw. die SecSign ID als auch der Name der Webseite, Webdienstes oder des PHP-Projektes zum Server geschickt werden. Der Name der Webseite bzw. Webdiensts wird dem Nutzer auf dem Smartphone angezeigt. Eine Authentifizierungs-Session besteht aus einer Session-ID, der SecSign ID sowie einem sogenannten ‚Access Pass‘. Die Klasse für die Session heißt ‚AuthSession‘.
Der Access Pass umfasst eine Base64 kodierte PNG-Grafik. Diese muss dem Nutzer angezeigt werden. Die gleiche Grafik wird dem Nutzer auf seinem Smartphone angezeigt und über den Vergleich wird die Sitzung auf dem Smartphone angenommen.
Wenn keine Sitzung angefordert werden kann, wird eine Exception geworfen. Die Exception sollte aufgefangen werden. Die Exception enthält eine Fehlernachricht über den Grund.
try { $secSignIDApi = new SecSignIDApi(); $authsession = $secSignIDApi->requestAuthSession($_POST['secsignid'], 'Name of Webservice', $_SERVER['SERVER_NAME']); } catch(Exception $e) { echo "An error occured when requesting session: " . $e->getMessage(); }
Nachdem eine Sitzung (Authentifizierungs-Session) vom Server angefordert wurde, muss dem Nutzer in z.B. der Webseite der Access Pass angezeigt werden. Der Access Pass besteht aus einem Base64-kodierten PNG-Bild. Der Nutzer vergleicht das angezeigte Bild mit denen aus seinem Smartphone und bestätigt über die Auswahl des richtigen Symbols die Sitzung.
Für Webseiten gilt dabei, dass diese Sitzungsinformationen zwischengespeichert werden müssen, um später den Status der Sitzung abzufragen. In Webseiten kann dies mittels Formularfeldern geschehen. Aus dem Beispiel sind die notwendigen Informationen ersichtlich, die benötigt werden, um später den Status der Sitzung abzufragen.
if(isset($authsession)) { // Show the access pass echo "<img alt='' src='data:image/png;base64," . $authsession->getIconData() . "'/>"; // Store the session data in a form // ... echo "<input type='hidden' name='requestid' value='" . $authsession->getRequestID() . "'>"; echo "<input type='hidden' name='secsignid' value='" . $authsession->getSecSignID() . "'>"; echo "<input type='hidden' name='authsessionid' value='" . $authsession->getAuthSessionID() . "'>"; echo "<input type='hidden' name='servicename' value='" . $authsession->getRequestingServiceName() . "'>"; echo "<input type='hidden' name='serviceaddress' value='" . $authsession->getRequestingServiceAddress() . "'>"; // ... }
Die vom Server angeforderte Sitzung kann verschiedene Zustände annehmen. Sobald die Sitzung vom Server angefragt wurde, hat sie den Status ‚Pending‘. Sobald der Nutzer auf seinem Smartphone die Session bestätigen möchte, bekommt die Sitzung den Status ‚Fetched‘. Akzeptiert der Nutzer durch Auswahl des richtigen Symbols die Sitzung, nimmt sie den Status ‚Authenticated‘ an.
Weiterer Status kann ‚Denied‘, ‚Canceled‘, ‚Expired‘ sowie ‚Suspended‘ sein. Eine weitergehende Erklärung kann den Kommentaren der Klasse ‚AuthSession‘ entnommen werden.
Auf das Akzeptieren (‚Authenticated‘) oder Ablehnen (‚Denied‘) der Sitzung durch den Nutzer muss reagiert werden. Dies kann entweder durch Aktion des Nutzer geschehen, dass z.B. mittels Schaltflächen das Formular (siehe Punkt 3) zum Server geschickt wird oder über Polling. Erhält man den Status vom Server, kann darauf reagiert werden. Die Sitzung kann entweder akzeptiert, abgelehnt oder im Schwebezustand (‚Pending‘) sein. Der Status kann mit den Konstanten aus der Klasse ‚AuthSession‘ verglichen werden.
Kommt es bei der Abfrage des Status zu Fehlern, wird eine Exception geworfen, die abgefangen werden kann bzw. abgefangen werden sollte.
// Create a new session instance, which is needed to check its status. $authsession = new AuthSession(); $authsession->createAuthSessionFromArray(array( 'requestid' => $_POST['requestid'], 'secsignid' => $_POST['secsignid'], 'authsessionid' => $_POST['authsessionid'], 'servicename' => $_POST['servicename'], 'serviceaddress' => $_POST['serviceaddress'] )); // Get the state of the session // server: https://httpapi.secsign.com // port: 443 $secSignIDApi = new SecSignIDApi(); $authSessionState = $secSignIDApi->getAuthSessionState($authsession);
Nachdem die Sitzung vom Nutzer über sein Smartphone akzeptiert wurde, hat die Sitzung den Status ‚Authenticated‘. Im PHP-Projekt oder der Webseite kann nun der Nutzer angemeldet werden bzw. eine weitere Anmeldung zugelassen werden. Lehnt der Nutzer die Sitzung ab, kann eine entsprechende Meldung ausgegeben werden. Sofern der Nutzer die Sitzung akzeptiert hat, muss sie über die Funktion ‚releaseAuthSession‘ noch freigegeben werden. Wurde die Sitzung abgelehnt bzw vom Server abgebrochen, ist die Freigabe nicht notwendig. Das explizite Freigeben ist notwendig, da der Server nicht weiß, wie lange die akzeptierte Sitzung aufgehoben werden soll, bis der Client bzw die Webseite den Status abgefragt hat.
Ist die Sitzung weder akzeptiert noch abgelehnt, befindet sie sich weiterhin im sogenannten Schwebezustand ‚Pending‘. Dann kann der Access Pass erneut angezeigt werden. Wurde die Sitzung vom Server abgebrochen oder ist abgelaufen, kann der Nutzer nicht angemeldet werden.
// The authentication session has been accepted. This is the only case // where the web application can login the user in the underlying system. if($authSessionState == AuthSession::AUTHENTICATED) { $secSignIDApi->releaseAuthSession($authsession); echo "Welcome" . $_POST['secsignid'] . " Your account..."; } // The user has denied the session. else if($authSessionState == AuthSession::DENIED) { echo "You have denied the session..."; } // The authentication session is still pending. The user didn't accept or denied the auth session yet. else if(($authSessionState == AuthSession::PENDING) || ($authSessionState == AuthSession::FETCHED)) { echo "The auth session is still pending... it has neither been accepted nor denied."; // Show access pass again... } else { echo "The auth session has an unknown status " . $authSessionState . ". therefore you cannot be logged in..."; }
Soll vom Client aus die Sitzung abgebrochen werden, kann dies über die Funktion ‚cancelAuthSession‘ erfolgen.
$secSignIDApi->cancelAuthSession($authsession);
Über die Klasse ‚SecSignIDApi‘ läuft die Kommunikation mit dem ID-Server. SecSignIDApi-Objekte müssen nicht speziell initialisiert werden. Siehe das Beispiel unter 2.
Die Methode zum Erfragen einer Sitzung erwartet als Parameter die SecSign ID, einen Namen der Webseite oder des PHP-Projektes sowie eine IP-Adresse bzw die URL der Webseite. Als Rückgabewert erhält man ein AuthSession-Objekt.
Alle weiteren Funktionen der SecSignIDApi-Klasse erwarten als Parameter ein gültiges AuthSession-Objekt.
Die Funktionen sind:
Da die einzelnen Werte der Sitzung zwischengespeichert werden müssen, gibt es in der Klasse ‚AuthSession‘ die Hilfsfunktion ‚createAuthSessionFromArray‘. Als Parameter wird ein benanntes Array bzw. assoziatives Array akzeptiert.
Die Felder des Arrays sind folgende:
Alle diese Felder müssen vorhanden sein, damit ein AuthSession-Objekt daraus erzeugt werden kann. Dieses Objekt kann dann wie gewohnt als Get-Funktionen abgefragt werden.
Die Get-Funktionen sind:
Alle Rückgabewerte sind vom Typ ‚String‘
Wir haben eine stetig wachsende Liste an APIs und Plugins um die SecSign ID Zwei-Faktor Authentifizierung einfach und schnell in jedes Projekt zu integrieren.
Wir bieten nicht nur APIs in zahlreichen Programmiersprachen, sondern auch Plugins für CMS, Server und VPN Umgebungen, oAuth2 und zahlreiche mehr. Die Plugins nutzen unsere APIs und bieten zusätzliche Funktionen, zum Beispiel Nutzer Management, einfache und native Installation, Logging oder die Integration in Firewalls oder Active Directories.
Das JIRA Plugin beispielsweise nutzt die JAVA-API. Die PHP-API und JS-API wird von WordPress, Joomla, Drupal, Typo3 und vielen anderen genutzt. Die ASP.net/C#-API wird für die Windows und Cisco VPN genutzt und die C-API findet Verwendung um Unix SSH Services zu schützen. Die Objective-C API wird für unsere AppleTV und iPhone und iPad Apps genutzt.
Sie können die SecSign ID Zwei-Faktor Authentifizierung und den Zwei-Faktor Login durch eine einfach Integration des Plugins in Ihre Website oder Ihre Testumgebung kennenlernen. Oder testen Sie den Login auf unserer Website, ohne sich vorher zu registrieren. Sie haben bereits eine SecSign ID oder hätten gerne eine? Loggen Sie sich jetzt ein und nutzen Sie das Portal oder registrieren Sie sich ganz unkompliziert.
Erfahren Sie selbst, wie schnell und unkompliziert der Login Prozess mit der Challenge-Response Authentifizierung mit 2048-bit Schlüsselpaaren ist. Sie brauchen keine Passwörter, und es werden keine vertraulichen Logindaten übertragen. Einfache Integration und unkomplizierte Nutzung.
Für mehr Informationen zum patentierten SafeKey Verfahren finden Sie hier.
Falls Sie eine API für eine Programmiersprache vermissen kontaktieren Sie uns unverbindlich. Falls Sie Hilfe mit der Integration in ein existierendes System brauchen oder kein passendes Plugin für Ihr Content Management System finden, kontaktieren Sie unser Support Team und wir helfen Ihnen gerne weiter.
Die Inhouse Installation der SecSign ID bietet Ihnen die Flexibilität, sich mit Ihren bevorzugten Server, Services und Geräten zu verbinden. Passen Sie die SecSign ID Ihrer Unternehmensmarke an!
Unsere Lösungen lassen sich leicht anpassen: Wählen Sie zwischen der durch uns betriebenen SecSign Cloud oder betreiben Sie selber den SecSign Authentifizierungsserver Inhouse oder in einem Rechenzentrum Ihrer Wahl. Mehr zum Inhouse Zwei-Faktor Authentifizierungsserver
Wir passen die App an ihre Unternehmens Look-and-Feel an. Zwei-Faktor Authentifizierung angepasst an Ihre Bedürfnisse, für Ihre Kunden.
Integrieren Sie die SecSign Zwei-Faktor Authentifizierung in existierende Apps mit unserem SDK. Es könnte nicht einfacher gehen.
Nutzen sie den Zwei-Faktor Authentifizierungsserver zum Schutz Ihres Active Directory/LDAP. Ihr individuelles Identity and Access Management System, beispielsweise mit verpflichtenden Updates und zahlreichen Sicherheitseinstellungen.
Integration in sämtliche Login-Umgebungen: Web, Local, VPN, Remote Desktop, Mobile Logins und viele mehr.
Komplexe Integrationen gehören der Vergangenheit an: SecSign bietet Ihnen Plugins für nahezu alle Umgebungen.
Würden Sie gerne mehr über unsere innovativen und hochsicheren Lösungen zum Schutz von Nutzerkonten und empfindlichen Daten erfahren?
Nutzen Sie unser Kontaktformular und ein SecSign Kundenbetreuer wird innerhalb eines Arbeitstages Kontakt mit Ihnen aufnehmen.
Benötigen Sie Hilfe mit einem existierenden SecSign Account oder einer Produktinstallation? Die häufigsten Fragen haben wir in unseren FAQs zusammengefasst. Sie finden keine Lösung zu Ihrem Problem? Kontaktieren Sie den
Kundensupport
Ich Interessiere mich für