DVDV-Bibliothek für Java API - Version 2.18.0 - Dokumentation
Die DVDV-Bibliothek ist eine Client-Library, die es einem Fachverfahren ermöglicht,
an der REST-Schnittstelle des DVDV2-Server Abfragen auszuführen.
Sie ist der Nachfolger des DVDV1-SDK und nicht zu diesem kompatibel.
Einbinden der DVDV-Bibliothek in den Build-Prozess
Fügen Sie die Dateidvdv-api-<VERSION>.jar
dem Build- und Laufzeit-Classpath hinzu,
aber die Datei dvdv-impl-<VERSION>.jar
nur dem Laufzeit-Classpath.
Fügen Sie die abhängigen Libraries (in einer jeweils aktuellen Version) ebenfalls dem Classpath hinzu.
Die zum jetzigen Zeitpunkt aktuellen Versionen der unmittelbar abhängigen Libraries finden Sie im Auslieferungsverzeichnis
lib/ext/.
Beispielanwendung
Im Auslieferungsverzeichnissamples finden Sie das Beispiel DVDV-SDK-sample
mit einer kurzen Anleitung.
Kurz-Einführung
Einsatz-Szenarien und Initialisierung
Sie können diese DVDV-Bibliothek in drei Szenarien einsetzen:- Rechenzentrumsinterne Schnittstelle: Dazu benötigen Sie die URL(s) zu (mindestens) einem DVDV2-Server, dessen rechenzentrumsinterne Schnittstelle "/dvdv2-backend/intern/*" Sie im Netzwerk erreichen können. Dies ist insbesondere für die Entwicklung sehr nützlich, da es die Abhängigkeit zu fremden Systemen verringert.
- Mit Authentifizierung am Kernsystem ("Standalone-Authentifizierung"): Dazu benötigen Sie die URL(s) zu (mindestens) einem DVDV2-Server. Dies ist das Standard-Szenario für Produktivumgebungen und Authentifizierung von Behörden.
- Mit IAM/Keycloak-basierten Authentifizierung: Dazu benötigen Sie außerdem noch die URL zu einer Instanz des IAM/Keycloak sowie verschiedene Authentifizierungsparameter. Dies ist das Standard-Szenario für Produktivumgebungen, in denen Standalone-Authentifizierung nicht möglich ist.
DVDV2ManagerFactory.
Die zentrale Schnittstelle in DVDVManager.
Nähere Informationen finden Sie abhängig von Einsatzszenario in
DVDV2ManagerFactory.createDVDV2ServerConnectionParamsBuilderIntern(), in
DVDV2ManagerFactory.createDVDV2ServerConnectionParamsBuilderStandalone() bzw. in
DVDV2ManagerFactory.createDVDV2ServerConnectionParamsBuilderIam().
Failover
Beim Auruf der MethodeDVDV2ManagerFactory.initialize(java.util.List<de.dvdv2.manager.DVDV2ServerConnectionParams>) können Sie mehrere DVDV2-Serververbindungen angeben.
Der Eintrag mit Index 0 ist der Standard-DVDV2-Server.
Die folgenden Einträge werden nur benutzt, wenn alle vorangegangenen ausgefallen sind ("Failover").
In diesem Fall wird die DVDV-Bibliothek in gewissen Abständen versuchen, wieder auf den Standard-DVDV2-Server zu wechseln ("Recover").
Wenn Ihr Fachverfahren auf Failover-Ergeignisse reagieren soll, verwenden Sie die Methode
DVDVManager.addFailoverListener(de.dvdv2.events.FailoverListener)
Fachliche Logik
Die fachliche Logik des DVDV2-Servers, die über die DVDV2-Bibliothek angeboten werden, erreichen Sie z.B. über die folgenden Funktionen des InterfaceDVDVManager:
DVDVManager.findServiceDescription(de.dvdv2.message.FindServiceDescriptionRequest)DVDVManager.findOrganizationDescription(de.dvdv2.message.FindOrganizationDescriptionRequest)(bzw. funktionsgleich:DVDVManager.findAuthorityDescription(de.dvdv2.message.FindOrganizationDescriptionRequest)DVDVManager.verifyCategory(de.dvdv2.message.VerifyCategoryRequest)DVDVManager.findCategories(de.dvdv2.message.FindCategoriesRequest)
Vergleich DVDV1-SDK mit der DVDV2-Bibliothek
Konzept
Folgendes sind einige der Unterschiede zwischen dem DVDV1-SDK und der DVDV2-Bibliothek:- Die Kommunikation zum Server basierte im Falle des DVDV1-SDK auf OSCI und durch die damit verbundene Latenz sehr langsam. Im Falle der DVDV2-Bibliothek findet die Kommunikation per HTTP(S) statt und ist somit deutlich schneller.
- Infolgedessen ist bei der DVDV2-Bibliothek zunächst auf die Implementierung eines Caches verzichtet worden.
- Die Kommunikation im Falle von DVDV1-SDK basierte auf XML. Zur Kommunikation mit dem DVDV-Server war u.a. eine wsdl-Datei nötig. Im Unterschied dazu basiert die Kommunikation im Falle der DVDV2-Bibliothek auf JSON, aber dies bleibt Ihrem Anwendungscode verborgen.
- Im Gegensatz zu DVDV1 bietet die DVDV2-Bibliothek die Möglichkeit, im Falle von Verbindungsproblemen transparent auf einen zweiten (oder ggf. sogar weiteren) DVDV2-Server und später wieder zurückzuwechseln. Dies war bei DVDV1 in der Verantwortung des Fachverfahrens.
Migration von DVDV1-basierten Fachverfahren.
Um ein bestehendes DVDV1-Fachverfahren auf DVDV2 zu migrieren, werden tiefgreifende Änderungen nötig sein. In einigen Punkten gibt es aber Entsprechungen zwischen der Schnittstellen des DVDV1-SDK und der der DVDV2-Bibliothek, z.B.:| DVDV1 | DVDV2 |
|---|---|
de.dvdv.manager.DVDVManager |
DVDVManager |
de.dvdv.object.message.DVDVRequest |
DVDVRequest |
de.dvdv.object.ServiceData |
ServiceBase |
de.dvdv.object.ServiceData.getUuid() |
ServiceBase.getDvdv1Uuid() |
de.dvdv.object.ServiceData.getValidFrom() |
ServiceBase.getValidFrom() |
de.dvdv.object.ServiceData.getValidUntil() |
ServiceBase.getValidTo() |
de.dvdv.object.ServiceElement |
ServiceElementInfo |
de.dvdv.object.CipherCertificateElement |
ServiceElementInfo mit
ServiceElementInfo.getServiceElementType() == ServiceElementType.CIPHER_CERTIFICATE |
de.dvdv.object.SignatureCertificateElement |
ServiceElementInfo mit
ServiceElementInfo.getServiceElementType() == ServiceElementType.SIGNATURE_CERTIFICATE |
de.dvdv.object.osci.OsciAddresseeElement |
ServiceElementInfo mit
ServiceElementInfo.getServiceElementType() == ServiceElementType.OSCI_ADDRESSEE |
de.dvdv.object.CipherCertificateElement.getCertificate() bzw. de.dvdv.object.SignatureCertificateElement.getCertificate() |
ServiceElementInfo.getCipherCertificate() nebst Certificate.getContent() |
de.dvdv.object.Authority |
OrganizationDescription nebst Organization |
de.dvdv.object.Authority.getName() |
LightweightOrganization.getNameDe() |
de.dvdv.object.Authority.getAuthorityProxies() |
OrganizationDescription.getRepresentatives() |
de.dvdv.object.Authority.getOwnClientCertificates() |
Organization.getClientCertificates() |
de.dvdv.object.Authority.getAllClientCertificates() |
OrganizationDescription.getAllClientCertificates() |
de.dvdv.object.Authority.getOwnServices() |
Organization.getServices() |
de.dvdv.object.Authority.getAllServices() |
OrganizationDescription.getAllServices() |
de.dvdv.DVDVException |
DVDVException |
de.dvdv.http.DVDVHttpException |
DVDVHttpException |
Packages
Package
Description
Nur die unterhalb dieses Root-Packages liegenden Packages und Klassen sind als Compile-Abhängigkeit zugelassen.
Interfaces zur Reaktion auf (Failover-)Events.
Beschreibungen und Kapselung für den Verbindungsaufbau eines Fachverfahrens
für die verschiedenen Varianten der Authentifizierung
für die Abfrage der fachlichen DVDV2 Objekte
Interfaces der fachlichen Objekte für die Anfrage des DVDV2 Backends.
Interfaces der fachlichen Objekte im DVDV2 Kontext.