Skip to content

Commit 535344b

Browse files
authored
Lint AsciiDoc links (#252)
* Lint AsciiDoc links * Prefix absolute paths with git root * Ignore hashes * Fix typo and check for existence * Eliminate docsdir * Exclude images but include other URLs * Strip fragments * Output path * Fix path substitution bug * Only verify http links * Try GET if HEAD fails * Try OPTIONS before HEAD * Add exceptions * Fix dots and warn * Use globs * Replace welcome package links * Fix dead links * Rearrange actions * Remove references to epa branch
1 parent 53022f1 commit 535344b

File tree

9 files changed

+95
-33
lines changed

9 files changed

+95
-33
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Lint Links
2+
3+
runs:
4+
using: "composite"
5+
steps:
6+
- name: Verify links
7+
shell: bash
8+
run: |
9+
function warn {
10+
>&2 echo -e "\033[0;33m$@\033[0m"
11+
}
12+
13+
function err {
14+
>&2 echo -e "\033[0;31m$@\033[0m"
15+
}
16+
17+
rc=0
18+
19+
while read -r file; do
20+
echo "Checking $file"
21+
22+
pushd "$(dirname "$file")" > /dev/null
23+
24+
while read -r location; do
25+
echo "Checking location $location"
26+
27+
if [[ "$location" == http* ]]; then
28+
if ! curl -X OPTIONS --silent --fail "$location" 2>&1 > /dev/null; then
29+
if ! curl --head --silent --fail "$location" 2>&1 > /dev/null; then
30+
if ! curl --silent --fail "$location" 2>&1 > /dev/null; then
31+
# Some URLs are examples or the endpoints helpfully support neither OPTIONS nor HEAD
32+
if [[ "$location" = *example* ]] || \
33+
[[ "$location" = https://idp-ref.app.ti-dienste.de/auth* ]] || \
34+
[[ "$location" = https://idp.app.ti-dienste.de/auth* ]] || \
35+
[[ "$location" = https://idp-ref.app.ti-dienste.de/token* ]] || \
36+
[[ "$location" = https://idp.app.ti-dienste.de/token* ]] || \
37+
[[ "$location" = https://idp-ref.app.ti-dienste.de ]];
38+
then
39+
warn "$file references non-verifiable location $location"
40+
else
41+
err "$file references non-existent location $location"
42+
rc=1
43+
fi
44+
fi
45+
fi
46+
fi
47+
else
48+
# Strip fragments and prefix absolute paths with repo root
49+
path=${location/\#*/}
50+
if [[ "$path" == /* ]]; then
51+
path=$(git rev-parse --show-toplevel)/$path
52+
fi
53+
54+
if [[ ! -e "$path" ]]; then
55+
err "$file references non-existent location $location"
56+
rc=1
57+
fi
58+
fi
59+
done < <(grep -hoE 'link:[^\[]*|image::?[^\[]*|https?://[^\["[:space:]]*' "$(basename "$file")" | grep -v '^image:' | sed -E "s/^link:+//g")
60+
61+
popd > /dev/null
62+
done < <(find . -type f -name "*.adoc")
63+
64+
exit $rc

.github/workflows/lint.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ on:
55
push:
66
branches:
77
- main
8-
- tim-epa-fdv
98
workflow_dispatch:
109

1110
jobs:
12-
asciidoc:
11+
asciidoc-images:
1312
runs-on: ubuntu-latest
1413

1514
steps:
@@ -19,6 +18,16 @@ jobs:
1918
- name: Lint
2019
uses: gematik/github-image-actions/.github/actions/[email protected]
2120

21+
asciidoc-links:
22+
runs-on: ubuntu-latest
23+
24+
steps:
25+
- name: Check out repository
26+
uses: actions/checkout@v4
27+
28+
- name: Lint
29+
uses: ./.github/actions/lint-links
30+
2231
drawio:
2332
runs-on: ubuntu-latest
2433

README.adoc

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ ifndef::env-github[:source-style: source]
1414

1515
image::meta/gematik_logo.svg[gematik,width="70%"]
1616

17-
image:https://github.com/gematik/api-ti-messenger/actions/workflows/lint.yml/badge.svg?branch=tim-epa-fdv[link="https://github.com/gematik/api-ti-messenger/actions/workflows/lint.yml"]
18-
image:https://github.com/gematik/api-ti-messenger/actions/workflows/generate-images.yml/badge.svg?branch=tim-epa-fdv[link="https://github.com/gematik/api-ti-messenger/actions/workflows/generate-images.yml"]
17+
image:https://github.com/gematik/api-ti-messenger/actions/workflows/lint.yml/badge.svg[link="https://github.com/gematik/api-ti-messenger/actions/workflows/lint.yml"]
18+
image:https://github.com/gematik/api-ti-messenger/actions/workflows/generate-images.yml/badge.svg[link="https://github.com/gematik/api-ti-messenger/actions/workflows/generate-images.yml"]
1919

2020
image:https://img.shields.io/badge/Release%20Notes-v1.1.1-red?style=plastic&logo=github&logoColor=red[link="ReleaseNotes.md"] +
2121
image:https://img.shields.io/badge/I_TiMessengerContactManagement-v1.0.1-blue?style=plastic&logo=github&logoColor=blue[link=/src/openapi/TiMessengerContactManagement.yaml"] +
@@ -101,11 +101,10 @@ TI-Messenger Dokumentation
101101
│ └──── link:images/generated[generated] (draw.io & PlantUML gerenderte Bilder)
102102
├─ link:samples[samples] (Codebeispiele, Postman Collections, etc)
103103
├─ link:src[src] (Quellen)
104-
│ ├──── link:src/drawio[drawio] (Quellen der drawio-Diagramme)
105-
│ ├──── link:src/openapi[openapi] (Schnittstellenbeschreibungen)
106-
│ │ ├── link:src/openapi/TiMessengerContactManagement.yaml[TiMessengerContactManagement.yaml] (API-Beschreibung der Freigabeliste)
107-
│ │ └── link:src/openapi/TiMessengerTestTreiber.yaml[TiMessengerTestTreiber.yaml] (API-Beschreibung der TestTreiber-Schnittstelle)
108-
│ └──── link:src/plantuml[plantuml] (Quellen der plantuml-Diagramme)
104+
│ ├──── link:src/images[images] (Quellen der draw.io- und PlantUML-Diagramme)
105+
│ └──── link:src/openapi[openapi] (Schnittstellenbeschreibungen)
106+
│ ├── link:src/openapi/TiMessengerContactManagement.yaml[TiMessengerContactManagement.yaml] (API-Beschreibung der Freigabeliste)
107+
│ └── link:src/openapi/TiMessengerTestTreiber.yaml[TiMessengerTestTreiber.yaml] (API-Beschreibung der TestTreiber-Schnittstelle)
109108
├── link:README.adoc[README.adoc]
110109
├── link:CODE_OF_CONDUCT.md[CODE_OF_CONDUCT.md]
111110
├── link:CONTRIBUTING.md[CONTRIBUTING.md]
@@ -130,12 +129,9 @@ Die nachfolgende Tabelle enthält die in der vorliegenden Online Dokumentation r
130129
|===
131130

132131
== 💡 Onboarding
133-
Hersteller und Anbieter eines *TI-Messenger-Dienstes* können das von der gematik bereitgestellte https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] zum Onboarding nutzen. Dieses Welcome Package ist als "Schritt-für-Schritt"-Anleitung gedacht, um Hersteller und Anbieter beim Onboarding des *TI-Messenger-Dienstes* zu unterstützen.
132+
Hersteller und Anbieter eines *TI-Messenger-Dienstes* können das von der gematik im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestellte Welcome Package zum Onboarding nutzen. Dieses Welcome Package ist als "Schritt-für-Schritt"-Anleitung gedacht, um Hersteller und Anbieter beim Onboarding des *TI-Messenger-Dienstes* zu unterstützen.
134133

135134
== Weiterführende Seiten
136-
*Anwendungsfälle* +
137-
link:docs/anwendungsfaelle/TI-Messenger-Anwendungsfaelle.adoc[- Anwendungsfälle]
138-
139135
*Produkttypen* +
140136
link:docs/Fachdienst/Fachdienst.adoc[- TI-Messenger-Fachdienst] +
141137
link:docs/Client/Client.adoc[- TI-Messenger-Client] +
@@ -146,11 +142,9 @@ link:docs/IDP/idp.adoc[- Zentraler IDP-Dienst] +
146142
link:docs/Primaersystem/Primaersystem.adoc[- Primärsystem] +
147143

148144
*Diverses* +
149-
https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[- Welcome Package &#91;DE&#93;] +
150-
https://gematikde.sharepoint.com/:w:/s/PTNeo/ETwc10F5Ha1KmlM8NEsetl8BtEumSDgu56AK-PNiZ0-e1Q?e=ySZROI[- Welcome Package &#91;EN&#93;] +
151-
https://gematikde.sharepoint.com/sites/EXTAuthenticator/Freigegebene%20Dokumente/Forms/AllItems.aspx?id=%2Fsites%2FEXTAuthenticator%2FFreigegebene%20Dokumente%2FVer%C3%B6ffentlichte%20Version%20%2D%20gematik%20Authenticator&p=true&ga=1[- gematik Authenticator] +
145+
https://fachportal.gematik.de/anwendungen/ti-messenger[- TI-Messenger im gematik Fachportal]
146+
https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[- Authenticator im gematik Fachportal] +
152147
https://github.com/gematik/TI-Messenger-Testsuite[- TI-Messenger-Testsuite] +
153-
link:docs/samples[- Codebeispiele & Requestsammlungen] +
154148
link:docs/FAQ/FAQ.adoc[- Fragen und Antworten zur aktuellen Spezifikation &#91;FAQ&#93;]
155149

156150
*Referenz-Implementierungen* +

docs/Authenticator/authenticator.adoc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ ifdef::env-github[]
77
endif::[]
88

99
:imagesdir: ../../images
10-
:docsdir: ../docs
1110
:toc: macro
1211
:toclevels: 6
1312
:toc-title: Table of Contents
@@ -26,7 +25,7 @@ Für die Authentifizierung mittels Smartcard stellt die gematik einen eigenen *A
2625
Die Aufgabe des *Authenticators* ist, dass von der *Relying Party* benötigte `ID_TOKEN` mit Zustimmung des Akteurs und nach eingehender Überprüfung dessen Identität am `Authorization-Endpunkt` des *IDP-Dienstes* zu beantragen. Die für die Beantragung des `ID_TOKEN` notwendigen Informationen bekommt der *Authenticator* von der *Relying Party* in der `Authorization Request URL` übergeben. Der von der gematik bereitgestellte *Authenticator* bezieht die Informationen für die notwendige elektronische Signatur im Challenge-Response-Verfahren zum Signieren des `CHALLENGE_TOKEN` von der Smartcard und fordert hierbei den Akteur zur PIN-Eingabe auf. Hierfür nutzt der *Authenticator* die notwendigen Operationen vom Konnektor. Der *Authenticator* fordert im Zusammenhang mit der PIN-Abfrage im selben Dialog die Consent-Freigabe des `USER_CONSENT` durch den Akteur ein, damit dieser durch die PIN-Eingabe seine Willenserklärung abgibt und der Verwendung seiner Daten in diesen `claims` zustimmt.
2726

2827
== Download und Konfiguration des Authenticators
29-
Die gematik stellt einen https://gematikde.sharepoint.com/sites/EXTAuthenticator/Freigegebene%20Dokumente/Forms/AllItems.aspx?id=%2Fsites%2FEXTAuthenticator%2FFreigegebene%20Dokumente%2FVer%C3%B6ffentlichte%20Version%20%2D%20gematik%20Authenticator&p=true&ga=1[Authenticator] gemäß *[gemSpec_IDP_Frontend]* bereit, der die Authentisierung eines Akteurs am zentralen *IDP-Dienst* unter Verwendung einer Smartcard (SMC-B / HBA) - in Kombination mit einem Konnektor und einem eHealth-Kartenterminal - ermöglicht.
28+
Die gematik stellt einen https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[Authenticator] gemäß *[gemSpec_IDP_Frontend]* bereit, der die Authentisierung eines Akteurs am zentralen *IDP-Dienst* unter Verwendung einer Smartcard (SMC-B / HBA) - in Kombination mit einem Konnektor und einem eHealth-Kartenterminal - ermöglicht.
3029

3130
CAUTION: Voraussetzungen für die Nutzung des von der gematik bereitgestellten *Authenticators* sind: +
3231
- Konnektor, +
@@ -50,6 +49,6 @@ WARNING: Der Parameter `cardType` wird erst mit dem Authenticator 4.4 unterstüt
5049
TIP: Sollten sich in den Konnektor-Terminals mehrere SMC-Bs befinden, erfolgt ab Version 4.0.0 des *Authenticators* keine Fehlermeldung mehr, sondern es erscheint ein Auswahldialog mit den vorhandenen SMC-Bs und detaillierten Informationen wie z.B. Kartenhalter und iccsn. Der Benutzer hat nun die Möglichkeit eine SMC-B Karte für den weiteren Auth.-Flow auszuwählen oder diesen durch 'Abbrechen' komplett zu beenden.
5150

5251
== Entwickleroption
53-
Innerhalb der link:https://gematikde.sharepoint.com/sites/EXTAuthenticator/Freigegebene%20Dokumente/Forms/AllItems.aspx?ga=1&id=%2Fsites%2FEXTAuthenticator%2FFreigegebene%20Dokumente%2FVer%C3%B6ffentlichte%20Version%20%2D%20gematik%20Authenticator%2FMockvariante%20Alpha%2DVersion%20%28TEST%2DONLY%29&viewid=19543cfb%2D531c%2D4ed7%2Da8c1%2D1fbd4aa0d244[Entwicklervariante] des *Authenticators* ist ein Mockmodus integriert, der die Verwendung eines Konnektors simulieren kann. Somit können Funktionstests auch ohne physisch vorhandenen Konnektor durchgeführt werden. Diese Funktion soll die Entwicklung mit dem *Authenticator* vereinfachen, da sie neben einem speziellen Mockmodus auch mehr Logging-Möglichkeiten zur Verfügung stellt. Eine Anleitung für den Mockmodus ist link:https://wiki.gematik.de/display/GAKB/Gematik+Authenticator+-+Entwicklervariante+mit+Mockmodus[hier] zu finden.
52+
Innerhalb der Entwicklervariante des https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[Authenticators] ist ein Mockmodus integriert, der die Verwendung eines Konnektors simulieren kann. Somit können Funktionstests auch ohne physisch vorhandenen Konnektor durchgeführt werden. Diese Funktion soll die Entwicklung mit dem *Authenticator* vereinfachen, da sie neben einem speziellen Mockmodus auch mehr Logging-Möglichkeiten zur Verfügung stellt. Eine Anleitung für den Mockmodus ist link:https://wiki.gematik.de/display/GAKB/Gematik+Authenticator+-+Entwicklervariante+mit+Mockmodus[hier] zu finden.
5453

5554
Hersteller die den gematik *Authenticator* für eine smartcardbasierte Authentisierung an ihrer Fachanwendung bzw. ihren Fachdienst anbinden möchten, können die link:https://wiki.gematik.de/display/GAKB/Gematik+Authenticator+SDK+Dokumentation[SDK-Dokumentation] der gematik verwenden. Zusätzlich ist der Quellcode des *Authenticator* link:https://github.com/gematik/app-Authenticator[hier] einsehbar.

docs/Fachdienst/Fachdienst.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,25 @@ Die gematik stellt ein IT Service Management System für die TI-Anbieter zur Ver
4545
* für die Beantragung der `TI-Provider-Credentials` für die Anbieterschnittstelle des *VZD-FHIR-Directory* und +
4646
* die Registrierung des *Registrierungs-Dienstes* beim zentralen *IDP-Dienst* der gematik.
4747

48-
Hierfür ist es erforderlich, dass sich ein Anbieter eines *TI-Messenger-Dienstes* beim TI-ITSM-System ongeboardet wird. Weitere Information sind im https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 4 zu finden. Das TI-ITSM-System ist unter der folgenden Internetseite erreichbar: https://www.ti-itsm.de
48+
Hierfür ist es erforderlich, dass sich ein Anbieter eines *TI-Messenger-Dienstes* beim TI-ITSM-System ongeboardet wird. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 4) entnommen werden. Das TI-ITSM-System ist unter der folgenden Internetseite erreichbar: https://www.ti-itsm.de
4949

5050
==== Zugang zum PKI-Management-System (PMS)
51-
Um das Signaturzertifikat (welches für die Signatur des `RegService-OpenID-Token` benötigt wird) abrufen zu können, müssen vorher ein Benutzeraccount und Berechtigungen über weitere Service-Requests für die Organisation und den Benutzer (nur Root-User) im TI-ITSM-System beantragt werden. Weitere Informationen sind im link:https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 6 zu entnehmen.
51+
Um das Signaturzertifikat (welches für die Signatur des `RegService-OpenID-Token` benötigt wird) abrufen zu können, müssen vorher ein Benutzeraccount und Berechtigungen über weitere Service-Requests für die Organisation und den Benutzer (nur Root-User) im TI-ITSM-System beantragt werden. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 6) entnommen werden.
5252

5353
Zugang zum PMS:
5454

5555
* RU/TU: https://www-testref.tms.ti-dienste.de
5656
* PU: https://auth.ti-dienste.de/my.policy
5757

5858
==== Erstellung des Signaturzertifikates für den Anbeiter
59-
Für die Signierung eines `RegService-OpenID-Token` durch den *Registrierungs-Dienst* eines *TI-Messenger-Fachdienstes* wird ein Signaturzertifikat der PKI der Telematikinfrastruktur benötigt. Das Zertifikat muss den Typ `C.FD.SIG` und die technische Rolle `oid_tim` haben. Die Beantragung des Signaturzertifikates erfolg über das TI-ITSM-System und ist anschließend über das PMS abrufbar (siehe hierzu https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 6)
59+
Für die Signierung eines `RegService-OpenID-Token` durch den *Registrierungs-Dienst* eines *TI-Messenger-Fachdienstes* wird ein Signaturzertifikat der PKI der Telematikinfrastruktur benötigt. Das Zertifikat muss den Typ `C.FD.SIG` und die technische Rolle `oid_tim` haben. Die Beantragung des Signaturzertifikates erfolg über das TI-ITSM-System und ist anschließend über das PMS abrufbar. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 6) entnommen werden.
6060

6161

6262
==== Beantragung der TI-Provider-Credentials am VZD-FHIR-Directory
6363
Initial muss der Anbieter eines *TI-Messenger-Dienstes* `TI-Provider-Credentials` für den Zugriff auf den Endpunkt `/tim-provider-services` des *FHIR-Proxy* beantragen. Die TIM-Provider-Services-Zugangsdaten erhält der Anbieter über eine weitere Serviceanfrage im gematik TI-ITSM-System. Hierbei muss das Signaturzertifikat bei der Beantragung mit übergeben werden. Dadurch wird sichergestellt, dass nur registrierte Anbieter eines *TI-Messenger-Dienstes* `RegService-OpenID-Token` am `/owner-authenticate`-Endpunkt des *Auth-Service* des *VZD-FHIR-Directory* gegen ein `owner-accesstoken` eintauschen können.
6464

6565
=== Bekanntmachung des Registrierungs-Dienstes am zentralen IDP-Dienst
6666

67-
Es besteht bereits eine abgeschlossene Scope-Registrierung am zentralen *IDP-Dienst* für den *TI-Messenger-Dienst*. Daher ist es nur erforderlich ber der gematik eine `client_id` für den *Registrierungs-Dienst* zu beantragen. Hierfür benötigt die gematik im Registrierungsformular die `redirect_uri` des *Registrierungs-Dienstes*, die zu der `client_id` registriert wird. Das Registrierungsformular kann unter [email protected] angefragt werden. Nach der Registrierung erhält der Anbieter die registrierte `client_id` sowie den Download-Endpunkt des Discovery Documentes des zentralen *IDP-Dienstes*. Weitere Informationen sind im https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 5 zu finden.
67+
Es besteht bereits eine abgeschlossene Scope-Registrierung am zentralen *IDP-Dienst* für den *TI-Messenger-Dienst*. Daher ist es nur erforderlich ber der gematik eine `client_id` für den *Registrierungs-Dienst* zu beantragen. Hierfür benötigt die gematik im Registrierungsformular die `redirect_uri` des *Registrierungs-Dienstes*, die zu der `client_id` registriert wird. Das Registrierungsformular kann unter [email protected] angefragt werden. Nach der Registrierung erhält der Anbieter die registrierte `client_id` sowie den Download-Endpunkt des Discovery Documentes des zentralen *IDP-Dienstes*. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 5) entnommen werden.
6868

6969

0 commit comments

Comments
 (0)