- Einführung
- Installation
- Erste Schritte
- Konfiguration
- Erste Schritte
- Übergreifende Befehle
vzd-cli admin
: Directory Administrationvzd-cli admin vault
vzd-cli admin status
vzd-cli admin <tu|ru|pu> login
vzd-cli admin <tu|ru|pu> login-cred
vzd-cli admin <tu|ru|pu> token
vzd-cli admin <tu|ru|pu> search
vzd-cli admin <tu|ru|pu> show <telematikID>
vzd-cli admin <tu|ru|pu> list
vzd-cli admin <tu|ru|pu> template
vzd-cli admin <tu|ru|pu> add-base
vzd-cli admin <tu|ru|pu> load-base
vzd-cli admin <tu|ru|pu> modify-base
vzd-cli admin <tu|ru|pu> modify-base-attr
vzd-cli admin <tu|ru|pu> delete
vzd-cli admin cert-info
vzd-cli admin <tu|ru|pu> list-cert
vzd-cli admin <tu|ru|pu> add-cert
vzd-cli admin <tu|ru|pu> clear-cert
vzd-cli admin <tu|ru|pu> save-cert
vzd-cli admin <tu|ru|pu> delete-cert
vzd-cli admin <tu|ru|pu> dump create
vzd-cli admin <tu|ru|pu> dump ocsp
vzd-cli admin <tu|ru|pu> log
vzd-cli admin <tu|ru|pu> activate
vzd-cli admin <tu|ru|pu> deactivate
vzd-cli apo
: ApoVZD APIvzd-cli gui
: Directory GUI- (Neu)
vzd-cli fhir
: FHIR Directory APIs
vzd-cli
wurde in Vorbereitung der Migration des gematik Verzeichnisdienstes (VZD) von LDAP nach FHIR entwickelt. Über ein modernes CLI (Command Line Interface) können neue und alte Schnittstellen des VZD genutzt werden.
Seit version 2.1 bittet vzd-cli
eine simple GUI.
Die neueste Version von vzd-cli
herunterladen.
Für die Ausführung des vzd-cli
soll die PATH
Variable um den Pfad vzd-cli-<VERSION>/bin
erweitert werden.
Sobald der Befehl vzd-cli
ausgeführt werden kann sind wir start klar:
$ vzd-cli
Usage: vzd-cli [OPTIONS] COMMAND [ARGS]...
Options:
-v Display log, use -vv for even more details
--version Show the version and exit
-h, --help Show this message and exit
Commands:
config Manage configuration
update Updates this software
login Logins into all configured APIs
admin CLI for DirectoryAdministration API
fhir CLI for FHIR Directory
apo CLI for ApoVZD API
gui Starts HTTP Server with GUI
pers Process gematik SMC-B/HBA Exports
generate-completion Generate a tab-complete script for the given shell
Aufbau des vzd-cli
folgt aktuellen Best-Practices analog z.B. zu Docker.
Für alle Befehle (Commands) und Unter-Befehle (Subcommands) kann man mittels --help
Option eine abschließende Liste aller Optionen und Argumente anzeigen lassen.
vzd-cli --help
vzd-cli config --help
vzd-cli config get --help
vzd-cli admin --help
vzd-cli admin ru --help
Die Directory APIs werden über HTTPS erreicht. Falls für die Verbindung ein HTTP-Proxy erforderlich ist, muss es wie folgt konfiguriert werden:
# Beispiel Proxy (http://PROXY_HOST:PROXY_PORT)
vzd-cli config set httpProxy.proxyURL http://192.168.0.1:8080
vzd-cli config set httpProxy.enabled true
vzd-cli
ermöglicht u.a. die Nutzung folgender APIs:
-
Directory Admin API
-
Apo API (ApoVZD)
-
FHIR FDV Search API
-
FHIR Search API (nur mit einem speziellen Token, s. https://directory-beta.ccs.gematik.solutions)
Für die Nutzung dieser APIs sind jeweils entsprechende Geheimnisse bzw. Credentials erforderlich. Diese werden von der gematik den bereichtigten Organistionen bereitgestellt.
Directory Admin API benutzt für die Authentisierung das Oauth2 Client Credentials Flow.
Um hierfür erforderlichen Credentials angemessen sicher aufbewahren zu können, stellt vzd-cli
eine Vault (Tresor) Funktion bereit.
Mithilfe der Vault werden alle Client IDs und Client Secrets verschlüsselt gespeichert.
Um Vault aufmachen und darin enthaltenen Credentials nutzen zu können, wird der Nutzer aufgefordert einen Vault-Password zu vergeben.
Dieser Password funktioniert analog zu den privaten Passwörtern bei den Password-Managern (z.B. Bitwarden, LastPass, 1Password).
Die Vault Implementierung befinden sich in der Datei Vault.kt
und verwendet von NIST emfohlene Verschlüsselung.
Falls das Speichern der Credentials nicht erwünscht ist, kann die Anmeldung direkt mit Client ID und Client Secret erfolgen, s. vzd-cli admin login-cred
.
Zusätzlich kann man einen vorhanden Token direkt setzen s. vzd-cli admin <tu|ru|pu> token
.
# Vault zurücksetzen
vzd-cli admin vault purge
# Secret für die Referenzumgebung speichern
# es folgt eine Vault Passwortabfrage
vzd-cli admin vault store -e ru -c <CLIEND_ID> -s <CLIENT_SECRET>
# Secret für die Produktivumgebung speichern
# es folgt eine Vault Passwortabfrage
vzd-cli admin vault store -e pu -c <CLIEND_ID> -s <CLIENT_SECRET>
Vault Password kann alternativ über die Umgebungsvariable VAULT_PASSWORD
(empfohlen) oder über --password
Parameter angegeben werden (nicht empfohlen).
Zugriff auf Apo API (ApoVZD) wird mittels API-KEYs geschützt. Die API-KEYs werden durch die gematik an die berechtigte Anwendungen vergeben.
# API Key für die Testinstanz
vzd-cli apo config set apiKeys.test <API_KEY_TEST>
# API Key für die Produktivinstanz
vzd-cli apo config set apiKeys.prod <API_KEY_PROD>
Zugriff auf FHIR FDV Search API wird mittels OAuth2 Client Credentials Flow geschützt. Die berechtige Dienstanbieter erhalten die Client ID und Client Secret von der gematik.
# Secret für die Referenzumgebung speichern
# es folgt eine Vault Passwortabfrage für persönliche Vault
vzd-cli fhir fdv-vault store -e ru -c <CLIEND_ID> -s <CLIENT_SECRET>
# Secret für die Produktivumgebung speichern
# es folgt eine Vault Passwortabfrage für persönliche Vault
vzd-cli fhir fdv-vault store -e pu -c <CLIEND_ID> -s <CLIENT_SECRET>
Befor die Directory Admin API genutzt werden kann, muss eine Anmeldung erfolgen. Die Anmeldung muss alle 6 Stunden wiederholt werden.
# Anmelden in die Referenzumgebung (ru)
# es folgt eine Vault-Passwortabfrage
vzd-cli login ru
# Anmelden in die Referenzumgebung (pu)
# es folgt eine Vault-Passwortabfrage
vzd-cli login pu
Für vollautomatisierte Nutzung des vzd-cli
, auch bei der Anmeldung, wird das setzten der Umgebungsvariable VAULT_PASSWORD
empfohlen.
Dabei soll die Umgebungsvarianle den während der Konfiguration angegeben Vault Passwort enthalten.
ru
)vzd-cli admin ru search Müller
pu
)vzd-cli admin pu search Berlin
ru
)vzd-cli admin ru search Müller Berlin
ru
)vzd-cli admin ru show 1-SMC-B-Testkarte-883110000117729
pu
)vzd-cli fhir pu fdv search healthcare-service -t <TelematikID>
vzd-cli fhir pu fdv search practitioner-role -t <TelematikID>
# oder in Kurzform
vzd-cli fhir pu fdv search hs -t <TelematikID>
vzd-cli fhir pu fdv search pr -t <TelematikID>
Befehle für Konfiguration des vzd-cli
. Folgende Konfigurationsparameter können geändert werden (s. vzd-cli config set --help
)
-
httpProxy.enabled
- wenntrue
, wird Proxy-Server bei allen Anfragen genutzt. Wennfalse
werden HTTP-Requests direkt ohne Proxy durchgeführt -
httpProxy.proxyURL
: URL des HTTP-Proxy Servers ggf. mit Port, z.B.:http://192.168.0.1:8080
-
updates.preReleasesEnabled
: wenntrue
, werden beimvzd-cli update
die Pre-Releses installiert
vzd-cli config get
vzd-cli config set httpProxy.proxyURL "http://example.com:8080"
vzd-cli config set httpProxy.enabled true
vzd-cli config set updates.preReleasesEnabled true
vzd-cli admin config reset
Aktualisiert das vzd-cli
auf die neusete (oder angegebene Version).
Anmerkung: Self-Updates werden erst ab der Version 2.1 unterstützt.
vzd-cli update
vzd-cli update 2.1.0-beta4
Befehle zur Verwaltung von OAuth2 Geheimnissen
Usage: vzd-cli admin vault [OPTIONS] COMMAND [ARGS]... Manage OAuth credentials in the Vault Options: -h, --help Show this message and exit Commands: purge Remove Vault list List configured OAuth2 credentials store Store OAuth2 client credentials export Export Vault to a file for backup or transfer. import Import credentials from another Vault
Zeigt die Information über den aktuellen Zustand des Clients. Insb. wird angezeigt in welche Umgebungen man angemeldet ist, OAuth2 Token Informationen und die Informationen über Backend APIs.
vzd-cli admin status
Anmelden beim OAuth2 Server mit Client-Credentials aus dem Vault.
vzd-cli admin vault
hinterlegt)vzd-cli admin tu login
vzd-cli admin ru login
vzd-cli admin pu login
Anmerkungen
|
Im Gegensatz zu Vault und darin enthaltenen Client-Credentials, werden die zeitlich befristete ACCESS_TOKEN unverschlüsselt im Ordner $HOME/.telematik/ gespeichert.
Die Tokens sind 6 Stunden gültig.
|
Anmelden beim OAuth2 Server mit explizit angegeben Client-Credentials
ru
)vzd-cli admin ru login-cred -c myclient -s mysecret
CLIENT_SECRET
ausgelesen, Referenzumgebung (ru
)export CLIENT_SECRET=mysecret
vzd-cli admin ru login-cred -c myclient
Zeigt oder setzt den ACCESS_TOKEN
für die angegebene Umgebung.
vzd-cli admin ru login
export ADMIN_ACCESS_TOKEN=$(vzd-cli admin ru token)
curl -H "Accept: application/json" \
-H "Authorization: Bearer $ADMIN_ACCESS_TOKEN" \
https://vzdpflege-ref.vzd.ti-dienste.de:9543/DirectoryEntries?baseEntryOnly=true
vzd-cli admin ru token -s <ACCESS_TOKEN>
Führt eine benutzerfreundliche Suche nach Einträgen. Dabei werden Natural Language Processing Algorithmen verwenden um angegebene Suchkriterien zu ermitteln. Derzeit werden folgende Kriterien unterstützt:
-
Orte in Deutschland, z.B. Berlin, Bad Homburg, Frankfurt am Main
-
Deutsche Postleitzahlen
-
TelematikIDs
-
Betriebsstätten / IK-Nummer
# Name und Ort
vzd-cli admin ru search Müller Berlin
# Ort und längerer Name
vzd-cli admin ru search Berlin Praxis Müller
# nur Name
vzd-cli admin ru search Praxis Müller
# Name und PLZ
vzd-cli admin ru search Praxis Müller 45144
# Erste Nummern der TelematikID (niedergelassene Arztpraxen)
vzd-cli admin ru search 1-20
Zeigt ausführliche Details zu dem Eintrag.
Durch --ocsp
Option kann die Online-Zertifikatsprüfung mittels OCSP-Responder eingefordert werden.
vzd-cli admin ru show 1-SMC-B-Testkarte-883110000102893 vzd-cli admin ru show 1-SMC-B-Testkarte-883110000102893 --ocsp
Suche und Anzeige von Verzeichnisdiensteinträgen durch eingabe einzelner Query-Parameter
Usage: vzd-cli admin ru list [OPTIONS] List directory entries Query parameters: --name TEXT --uid TEXT --givenName TEXT --sn TEXT --cn TEXT --displayName TEXT --streetAddress TEXT --postalCode TEXT --countryCode TEXT --localityName TEXT --stateOrProvinceName TEXT --title TEXT --organization TEXT --otherName TEXT -t, --telematikID TEXT --specialization TEXT --domainID TEXT --holder TEXT --personalEntry [true|false] --dataFromAuthority [true|false] --professionOID TEXT --entryType INT --maxKOMLEadr INT --changeDateTimeFrom ISODATE --changeDateTimeTo ISODATE --baseEntryOnly [true|false] OCSP options: --ocsp Validate certificates using OCSP Options: --human, --json, --yaml, --csv, --table (default: HUMAN) -f, --param-file PARAM FILENAME... Read parameter values from file -p, --param NAME=VALUE Specify query parameters to find matching entries -o, --outfile PATH Write output to file --sync use Sync mode -h, --help Show this message and exit
-
--param-file
oder-f
Liest Werte eines Parameters aus der Datei und fragt für jeden Wert nach Eintrag im VZD ab. Die Datei soll den gewünschten Wert einmal pro Zeile enthalten:
vzd-cli admin ru list -t 1-SMC-B-Testkarte-883110000102893
5-
beginnt (Krankenhäuser).vzd-cli admin ru list -t "5-*" --localityName Berlin
telematik.txt
vzd-cli admin ru list -f telematikID telematik.txt --table
telematik.txt
4-SMC-B-Testkarte-883110000093329 3-SMC-B-Testkarte-883110000093294 2-SMC-B-Testkarte-883110000093645 3-SMCB-Testkarte-883110000092193
Generiert die Dateivorlagen für Entry, BaseEntry und UserCertificate.
vzd-cli admin ru template base > Eintrag.yaml
vzd-cli admin template base --json > Eintrag.json
Neuen Verzeichnisdiensteintrag erstellen.
Beispiel: einen leeren Eintrag mit angegebenen telematikID erstellen:
vzd-cli admin ru add-base -s telematikID=9-TEST -s entryType=4
Lädt einen Basiseintrag. Die geladene Struktur kann als Datei gespeichert werden, in einem Text-Editor bearbeitet und anschließend mit vzd-cli admin modify-base
modifiziert werden.
Zeigt informationen aus Zertifikate (DER-Format) und führt OCSP-Abfragen durch.
vzd-cli admin cert-info cert1.der cert2.der --ocsp
Fügt einen neuen X509-Zertifikat zu existierenden Verzeichnisdiensteintrag hinzu.
# zuerst einen leeren Basiseintrag erzeugen
vzd-cli admin ru add-base -s telematikID=1-123123 -s entryType=1
# danach Zertifikat hinzufügen
# Achtung: TelematikID beim Befehl admin add-base und im Zertifikat müssen identisch sein
vzd-cli admin ru add-cert 1-123123.der
# Fügt alle Zertifikate aus dem aktuellen Ordner das VZD
# TelematikID und BasisEintrag werden automatisch aus dem Zertifikat
# ermittelt (Admission Statement -> Registration Number)
vzd-cli admin ru add-cert *.der
Löscht alle Zertifikate aus dem angegeben Eintrag.
vzd-cli admin ru clear-cert -t 1-123123
Warning
|
Nicht implementiert. Bitte vzd-cli admin clear-cert verwenden.
|
Löscht einen X509-Zertifikat.
Liest die Einträga aus STDIN, stellt für jeden gefundenen Zertifikat eine OCSP-Abfrage.
Zeigt die Änderungshistorie der Einträge im VZD. Die Änderungen können nach UID, TelematikID (inkl. Pattern) abgefragt werden sowie nach ClientID oder Operation. Zusätzlich können die Ergebnisse nach Zeitperiode gefiltert werden:
# zeigt alle Änderungen für die Einträge mit Prefix 9-
vzd-cli admin ru log -t "9-*"
# zeigt alle Änderungen für die Einträge mit Prefix 9-,
# die sich seit 1.02.2023 geändert haben
vzd-cli admin ru log -t "9-*" --logTimeFrom 2023-02-01T00:00:00Z
Aktiviert den Eintrag in dem das Attribut active
auf true
gesetzt wird
vzd-cli admin ru activate -t "9-12345678"
Konfiguration der ApoVZD Clients.
# aktuelle konfiguration anzeigen: vzd-cli apo config get # Api-Key für Testinstanz setzen: vzd-cli apo config set apiKeys.test <Api-Key> # Api-Key für Produktivinstanz setzen: vzd-cli apo config set apiKeys.prod <Api-Key>
vzd-cli apo prod search Linden
Durch den Befehl vzd-cli gui
wird ein HTTP Server gestartet und ein neuer Browser-Tab mit GUI geöffnet.
Suche nach Einträgen in der FHIR FDV Search API.
vzd-cli fhir pu fdv search hs -t 1-1234567890
Befehle zur Verwaltung von OAuth2 Geheimnissen für die FHIR FDV Search API. Aufbau ist analog zu vzd-cli admin vault
.
Lesen und Setzen eines ACCESS_TOKEN
für die FHIR Search API.
# Setzen des ACCESS_TOKEN für Referenzumgebung (ru)
vzd-cli fhir ru token -s <ACCESS_TOKEN>
# Lesen des ACCESS_TOKEN für Referenzumgebung (ru)
vzd-cli fhir ru token