Generic selectors
Exact matches only
Search in title
Search in content

JAVA API

SecSign ID JAVA API für die Integration einer Zwei-Faktor Authentifizierung


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.

SecSign ID ist eine echte Zwei-Faktor-Authentifizierung.
Die SecSign ID API wurde designed, um einfach, schnell und robust zu sein, um ebenso einfach und schnell in bestehende Projekte integriert werden zu können.
Die SecSign ID Java API kann hierbei dazu genutzt werden, um eine Zwei-Faktor-Authentifizierung in Web-Anwendungen auf Application-Servern wie Apache Tomcat, Oracle Glassfish oder IBM Websphere zu integrieren, als auch in normalen Java-Swing-Anwendungen oder Java-Applets.

Ein weiteres Anwendungsgebiet ist zum Beispiel die Integration in Web-Anwendungen, wie z.B. JIRA.

Somit können Sie die Java-API nutzen, um über eine einfache und zugleich hochsichere Benutzeranmeldung mit einem iOS- oder Android-Gerät zu verfügen.

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

    Im Java-API Zip-Archiv finden sie neben den beiden API-Jars ‚SecSignIDApi.jar‘ und ‚SecPKIApi.jar‘ den Quellcode der API-Klassen, als auch ein kleines Beispiel zur Integration in eine Swing-Anwendung. Die Einbindung in Java-Server-Faces-Anwendungen oder Java-Servlets erfolgt zum Swing-Beispiel analog. Darüber hinaus finden Sie die Quelltexte auch auf der SecSign GitHub Seite.

    1. Vorraussetzungen für die Integration

    Je nach möglichem Einsatz in einer Java-Server-Faces-Anwendung, in JavaServer-Pages oder einer Swing-Application sind folgende Voraussetzungen zu erfüllen:

    • Installation eines Application-Servers, z.B, Apache Tomcat, Apache Geronimo oder Oracle Glassfish
    • Installation eines Java Enterprise Edition Servers (J2EE bzw Java EE)
    • Installation von Java 1.7 EE und dem beigelegten GlassFish Server, siehe
      Java EE 7 Tutorial“.
    • Installation einer aktuellen Java Runtime Umgebung (JRE) oder Java Development Kits (JDK) von Oracle
    • Einbinden der API-Jars in den Java-Klassenpfad

    Daneben kann die SecSign Java Api allgemein in alle Projekte integriert werden, die OSGi nutzen. OSGi steht dabei für Open Services Gateway Initiative.

    Projekte und Anwendungsserver, die auf OSGi basieren sind z.B. Oracle Weblogic, Atlassian JIRA und Confluence als auch z.B. JBoss oder freie Projekte wie OpenEJB.

    OSGi ist dabei eine offene und hardwareunabhängige Plattform zur Modalisierung und basiert auf Java. Genauer definiert OSGi ein Komponentenmodell.

    Über die leichte Modularisierung von Beans mittels WAR-Modulen bzw. JAR lässt sich die SecSign ID Java API nutzen, um leicht eine Zwei-Faktor-Authentifizierung zu implementieren. Eine ausführliche Liste der Projekte, welche auf OSGi basieren, finden Sie hier.

    2. Integration der Java-API

    Laden sie das Java-API Zip-Archiv herunter und entpacken es. Die beiden JARs müssen ihrem Java-Projekt hinzugefügt werden.
    In Eclipse z.B. über Einstellungen > Java > Build Path > User Libraries oder Sie legen die beiden JARs in das entsprechende Verzeichnis Ihres Java-Projekts. Eclipse erkennt dies automatisch und bindet die JARs ein.
    Bei Application-Servern kommt es dagegen darauf an, wie die zugrunde liegende Struktur auszusehen hat. Bei Oracle Glassfish z.B. müssten die JARs in ein WAR gewandelt und anschließend deployed werden.

    In den entsprechenden Klassen ihres Projektes importieren sie die benötigten Klassen aus dem Package ‚com.secsign.secsignid‘:

    import com.secsign.secsignid.SecSignIDApi;
    import com.secsign.secsignid.AuthenticationSession;
    import com.secsign.secsignid.AuthenticationSessionState;
    import com.secsign.secsignid.SecSignIDException;

    Übersicht über die Struktur des Java-API Zip-Archivs:

    README.md
    secsign_logo.png
    developer/
    lib/SecPKIApi.jar
    lib/SecSignIDApi.jar
    lib/secpki.properties
    lib/secsign.com-wildcard-rapidSSL-2014-09-29.der
    src/com/secsign/secsignid/AuthenticationSession.java
    src/com/secsign/secsignid/AuthenticationSessionState.java
    src/com/secsign/secsignid/SecSignIDApi.java
    src/com/secsign/secsignid/SecSignIDException.java
    src/com/secsign/secsignid/example/SecSignIDApiJavaSwingExample.java

    3. Eine Authentifizierungssitzung anfordern

    Um nun einen Nutzer mittels seiner SecSign ID in der Web-Anwendung oder einem Content-Management-System (CMS) anmelden zu können, fordert man beim SecSign ID Server eine sogenannte Authentifizierungs-Session an. Kurz: AuthSession.
    Die AuthSession kann dann vom Nutzer auf seinem Smartphone akzeptiert werden, so dass der Nutzer anschließend im System angemeldet werden kann.
    Zum Anfordern einer AuthSession nutzt man die Methode ‚SecSignIDApi.requestAuthenticationSession‘

    // create the SecSignID-API instance which can send requests to the SecSignID server
    SecSignIDApi secSignIdApi = new SecSignIDApi();
    String secSignID = secSignIdTextField.getText();
    AuthenticationSession authSession = null;
    try
    {
    	authSession = secSignIdApi.requestAuthenticationSession(secSignID,
    		"SecSignID Java integration example",
    		"www.example.com",
    		"127.0.0.1");
    }
    catch (SecSignIDException exception)
    {
    	exception.printStackTrace();
    	JOptionPane.showMessageDialog(null, exception.getLocalizedMessage());
    }

    Als Rückgabewert erhält man ein Objekt vom Typ ‚AuthenticationSession‘. Die Klasse hält alle Informationen über die AuthSession wie SecSign ID, AuthSession ID, den Access Pass als PNG-Grafik und die gemachten Informationen beim Anmelden.
    Die Methode ‚SecSignIDApi.requestAuthenticationSession‘ erhält als Parameter die SecSign ID, die angemeldet werden soll, daneben einen Namen der Web-Application, im Beispiel ‚SecSignID Java integration example‘ als auch eine URL.
    Der gewählte Name der Web-Application wird dem Nutzer in der Push-Notification auf seinem Smartphone angezeigt. Die URL wird dagegen dem Nutzer beim der Auswahl des richtigen Access-Pass ausgewählt.

    java

    java

    4. AccessPass anzeigen

    In dem zurückgegebenen Objekt vom Typ AuthenticationSession sind alle Informationen über die erhaltene und gestartete AuthSession.
    Darunter ist auch eine PNG-Grafik, die den sogenannten Access Pass darstellt. Dieser Access Pass muss dem Nutzer angezeigt werden. Auf seinem Smartphone erhält er beim Bestätigen Der AuthSession vier solcher Access Passes zur Auswahl, wobei er den richtigen wählen muss.

    Je nach System, Servlets oder Swing-Anwendung gibt es mehrere Möglichkeiten, den Access Pass anzuzeigen:

    Swing Anwendung

    Im Beispiel existiert in der Swing-Anwendung ein Label namens ‚accessPassImage‘. Auf diesem Label wird der erhaltene Access-Pass angezeigt, in dem das Byte-Array in eine ImageIcon-Instanz geladen wird.

    /**The label to show the logo and access pass**/
    private JLabel accessPassImage;
    //etc.
    if (authSession != null){
        // Show the Access Pass
        final byte[] passIcon = session.getAuthSessionIconData();
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                accessPassImage.setIcon(new ImageIcon(passIcon));
            }
        });
    }

    JSF-Anwendung

    In einer Java-Server-Faces-Webanwendung werden Daten üblicherweise in HTML-Pattern geschrieben, die dann an den Browser geschickt werden.
    In der XHTML-Vorlage kann zum Beispiel Objekt und Klassenvariable eingebettet werden über:

    #{secsignid.iconData}

    Sobald die Vorlage gerendert wird, wird versucht ein Objekt ’secsignid‘ zu finden, das über Getter- und Setter-Methoden verfügt für eine Variable ‚iconData‘:

    /**
     * The iconData of the access pass
     */
    private String iconData;
    try
    {
    	AuthenticationSession authSession = secSignIdApi.requestAuthenticationSession(secSignID,
    		"SecSignID Java integration example",
    		"www.example.com",
    		"127.0.0.1");
    	sessionID = authSession.getAuthSessionID();
    	// this field is read when the xhtm pattern is rendered and the value is inserted at: #{secsignid.iconData}
    	iconData = new BASE64Encoder().encode(authSession.getAuthSessionIconData());
    	log.log(Level.INFO,"Received the authentication session with ID '" + sessionID + "' for SecSignID user ID '" + userId + "'.");
    	return "accesspass?faces-redirect=true"; // go to the page showing the access pass and update the displayed URL in the browser
    }
    catch(SecSignIDException exception)
    {
    	log.log(Level.SEVERE, "Error when requesting an authentication session for SecSignID '" + secSignID + "'", ex);
    }

    5. Abfrage des Session-Status

    Die vom ID-Server angeforderte AuthSession kann verschiedene Zustände haben. Zum Abfragen, ob der Nutzer die AuthSession akzeptiert oder abgelehnt hat, oder ob eventuell die Session abgelaufen ist, kann die API-Methode ‚SecSignIDApi.getAuthenticationSessionState‘ genutzt werden:

    // Get the State
    AuthenticationSessionState state = null;
    try
    {
    	state = secSignIdApi.getAuthenticationSessionState();
    }
    catch (SecSignIDException exception)
    {
    	exception.printStackTrace();
    }

    6. Reaktion auf einen Session-Status

    Auf das Akzeptieren (‚AUTHENTICATED‘) oder Ablehnen (‚DENIED‘) der Sitzung durch den Nutzer muss reagiert werden. Die Sitzung kann entweder akzeptiert, abgelehnt oder im Schwebezustand (‚PENDING‘) oder (‚FETCHED‘) sein. Der Status kann mit den Konstanten aus der Klasse ‚AuthenticationSessionState‘ verglichen werden. Ist die Sitzung vom Nutzer akzeptiert worden, kann er im darunter liegenden System oder der Web-Anwendung angemeldet werden.

    switch (state.getAuthSessionState()) {
    	case AuthenticationSessionState.FETCHED:
    	case AuthenticationSessionState.PENDING:
    	{
    		msg = "The session is still pending. Please accept the session in the SecSignApp on your smart phone.";
    		break;
    	}
    	case AuthenticationSessionState.DENIED:
    	{
    		msg = "The session has been denied on the smart phone.";
    		checkForState = false;
    		break;
    	}
    	case AuthenticationSessionState.AUTHENTICATED:
    	{
    		try
    		{
    			secSignIdApi.releaseAuthenticationSession();
    		} catch (SecSignIDException exception)
    		{
    			exception.printStackTrace();
    		}
    		msg = "Successfully Authenticated SecSign ID ""+state.getAuthenticatedSecSignId()+""";
    		checkForState = false;
    		break;
    	}
    //etc.
    }

    7. Abbruch einer Authentifizierung

    Wünscht der Nutzer, den gesamten Anmeldeprozess abzubrechen oder wünscht es allgemein der Client, wird hier zu die Methode ‚SecSignIDApi.cancelAuthenticationSession‘ genutzt. Anschließend kann mit der gleichen SecSignID API-Instanz erneut eine Anmeldung durchgeführt werden.

    try
    {
    	secSignIdApi.cancelAuthenticationSession();
    }
    catch (SecSignIDException exception)
    {
    	exception.printStackTrace();
    }

    8. Überblick

    SECSIGN API Klassen

    Im Zip-Archiv findet sich im Unterverzeichnis ‚developer‘ das JavaDoc zu den SecSign ID Java API Klassen.

    Constructor und Beschreibung

    • SecSignIDApi() – Constructor of the SecSign ID API bean
    • SecSignIDApi(java.lang.String idServer, int idServerPort)
    • requestAuthenticationSession(java.lang.String secSignID, java.lang.String serviceInfo, java.lang.String serviceAddress)
    • getAuthenticationSessionState()
    • cancelAuthenticationSession()
    • releaseAuthenticationSession()

    SECSIGN AUTHENTICATION SESSION

    • byte[] getAuthSessionIconData()
    • long getAuthSessionID()
    • java.lang.String getRequestingServiceAddress()
    • java.lang.String getRequestingServiceName()
    • java.lang.String getSecSignID()
    • void setAuthSessionIconData(byte[] authSessionIconData)
    • void setAuthSessionID(long authSessionId)
    • void setRequestingServiceAddress(java.lang.String requestingServiceAddress)
    • void setRequestingServiceName(java.lang.String requestingServiceName)
    • void setSecSignID(java.lang.String secSignId)

    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