Generic selectors
Exact matches only
Search in title
Search in content

PHP API

Zwei-Faktor Authentifizierung mit der SecSign ID

Verwenden Sie auf Ihrer PHP-Seite die SecSign ID Zwei-Faktor-Authentifizierung, die Ihnen eine einfache und zugleich hochsichere Benutzeranmeldung mit einem iOS- oder Android-Gerät bietet sowie Desktop-Anwendungen absichert.


Erfahren Sie, warum unsere Zwei-Faktor Authentifizierung die Beste ist und Sie die Sicherheit Ihres Unternehmens upgraden sollten. Für Entwickler haben wirhier Informationen zusammengetragen.

Erfahren Sie mehr über Inhouse-Installationen und Ihre individuelle Firmen-App mit Ihrem Corporate Design.

Downloaden Sie das Plugin kostenlos in der Cloud für bequemen und sicheren Schutz.


Inhaltsverzeichnis

    Fragen? Kontaktieren Sie uns, wenn Sie Hilfe beim Setup des SecSign ID Plugins brauchen oder Ihnen ein Plugin für eine andere Programmierumgebung fehlt.
    KONTAKTIEREN SIE UNS

    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)

    Sie möchten den Composer nutzen?

    Wir haben ein unkompliziertes Composer Paket für Sie vorbereitet, für eine noch einfachere Integration der SecSign ID Zwei-Faktor Authentifizierung.
    Composer Bundle

    1. Integration der API

    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');

    2. Anfordern einer Sitzung

    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();
    }

    3. Anzeigen des Sitzungspasses und Speicherung der Parameter

    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.

    • Request ID: die Request ID ist die ID der aktuell angeforderten Sitzung. Über diese ID werden weitere Abfragen z.B. über den Sitzungs-Status zugeordnet.
    • Requested session. Through this ID all further requests,
      e.g. a request for the state of the session are assigned
    • SecSign ID: der Name des Nutzers
    • AuthSession ID: die ID der angeforderten Sitzung
    • S Service Name: der Name des PHP Projektes bzw. der Webseite
    • Service Address: die IP-Adresse bzw URL des PHP-Projektes bzw der Webseite

    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() . "'>";
       // ...
    }

    4. Abfragen des Sitzungsstatus

    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);

    5. Reaktion auf den Sitzungsstatus

    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...";
    }
    

    6. Abbruch der Sitzung

    Soll vom Client aus die Sitzung abgebrochen werden, kann dies über die Funktion ‚cancelAuthSession‘ erfolgen.

    $secSignIDApi->cancelAuthSession($authsession);

    7. Das SecSignApi Objekt

    Ü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:

    • requestAuthSession($secsignid, $servicename, $serviceadress)
    • getAuthSessionState($authSession)
    • cancelAuthSession($authSession)
    • releaseAuthSession($authSession)

    8. Das Authsession Objekt und Hilfsfunktionen für die Authentifizierungs-Session

    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:

    • requestid
    • secsignid
    • authsessionid
    • servicename
    • serviceaddress
    • authsessionicondata

    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:

    • getRequestID()
    • getSecSignID()
    • getAuthSessionID()
    • getRequestingServiceName()
    • getRequestingServiceAddress()
    • getIconData()

    Alle Rückgabewerte sind vom Typ ‚String‘

    9. Unsere APIS

    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.

    available_apis

    10. Erfahren Sie mehr

    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.

    Ihr eigener ID-Server

    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!

    your_own_id

    Warum sollte ich SecSign nutzen?

    Inhouse oder Cloud Lösungen

    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

    Einfache Anpassung an Ihre Bedürfnisse

    Wir passen die App an ihre Unternehmens Look-and-Feel an. Zwei-Faktor Authentifizierung angepasst an Ihre Bedürfnisse, für Ihre Kunden.

    Anwendungsfertiges SDK

    Integrieren Sie die SecSign Zwei-Faktor Authentifizierung in existierende Apps mit unserem SDK. Es könnte nicht einfacher gehen.

    Unkompliziertes Nutzer-Management

    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.

    Schützen Sie ALLE Logins

    Integration in sämtliche Login-Umgebungen: Web, Local, VPN, Remote Desktop, Mobile Logins und viele mehr.

    Plugins für alle Anwendungsgebiete

    Komplexe Integrationen gehören der Vergangenheit an: SecSign bietet Ihnen Plugins für nahezu alle Umgebungen.

    SecSign 2FA