Skip to content

Commit 3967501

Browse files
committed
added files for DSF v1.9.0
1 parent cf95fad commit 3967501

24 files changed

+2473
-5
lines changed

docs/src/.vuepress/layouts/PageLayout.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useRoute, useRouter } from "vue-router";
44
import { ref, onMounted } from 'vue'
55
66
const version = ref("");
7-
const latestVersion = "v1.8.0";
7+
const latestVersion = "v1.9.0";
88
99
1010
function setVersionBasedOnCurrentPath() : void {
@@ -55,7 +55,8 @@ function navigateToNewVersion() {
5555
<div class="version-selector" v-if="route.path.startsWith('/operations/')">
5656
<label class="vp-sidebar-header" for="version-select"><strong>Version:</strong> </label>
5757
<select id="version-select" class="vp-sidebar-header" v-model="version" @change="navigateToNewVersion">
58-
<option value="v1.8.0">latest (1.8.0)</option>
58+
<option value="v1.9.0">latest (1.9.0)</option>
59+
<option value="v1.8.0">1.8.0</option>
5960
<option value="v1.7.1">1.7.1</option>
6061
<option value="v1.7.0">1.7.0</option>
6162
<option value="v1.6.0">1.6.0</option>

docs/src/.vuepress/theme.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,9 @@ export default hopeTheme({
116116
"/operations/next/": [],
117117
"/operations/v2.0.0-M4/": [],
118118
"/operations/v2.0.0-M3/": [],
119-
"/operations/v1.8.0/": generate_v1_latest_sidebar(),
120-
"/operations/v1.7.1/": generate_v1_latest_sidebar(),
119+
"/operations/v1.9.0/": generate_v1_latest_sidebar(),
120+
"/operations/v1.8.0/": generate_v1_gt_eq_1_7_0_sidebar(),
121+
"/operations/v1.7.1/": generate_v1_gt_eq_1_7_0_sidebar(),
121122
"/operations/v1.7.0/": generate_v1_gt_eq_1_7_0_sidebar(),
122123
"/operations/v1.6.0/": generate_v1_gt_eq_1_5_0_sidebar(),
123124
"/operations/v1.5.2/": generate_v1_gt_eq_1_5_0_sidebar(),

docs/src/operations/latest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v1.8.0
1+
v1.9.0
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
title: Allow List Management
3+
icon: share
4+
---
5+
You can read all about the concept of Allow Lists [in our introduction](/explore/concepts/allow-list.md).
6+
7+
## Overview
8+
To simplify the DSF Allow List Management we have built a portal for administration. The portal is managed by the GECKO Institute at Heilbronn University. You as an DSF administrator can create or update your Allow List information. The information you provide on this portal will be transferred to us and will be used to built Allow List bundles that get distributed to the communication partners of the distributed processes.
9+
10+
The DSF Allow List management tool uses client certificates for authentication. You can either use a personal client certificate or the client certificate from your DSF BPE, which needs to be added to your web-browsers certificate store.
11+
12+
13+
## Prerequisites
14+
1. Deployed DSF instance (test or production infrastructure)
15+
1.1 If none exists yet, read [the installation guide](install)
16+
2. Certificate
17+
2.1 If none exists yet, read [the certificate requirements](install#client-server-certificates)
18+
3. Organization identifier, shortest FQDN of your organizations website, e.g. `my-hospital.de`
19+
4. FHIR endpoint URL, e.g. `https://dsf.my-hospital.de/fhir`
20+
5. Contact details from a responsible person of your organization
21+
6. Access to the E-Mail address from your organization for verification
22+
23+
24+
## Start here
25+
When you have fulfilled all the prerequisites, you can start managing your Allow Lists via the environment specific Allow List Management Tool:
26+
27+
- [**Test** infrastructure](https://allowlist-test.gecko.hs-heilbronn.de)
28+
- [**Production** infrastructure](https://allowlist.gecko.hs-heilbronn.de)
29+
30+
We use different highlight colors for the DSF Allow List Management Tool: Green for the **Test** environment and blue for the **Production** infrastructure. To access the site, you have to authenticate yourself with a client certificate. Your web-browser will show a dialog to choose a valid certificate.
31+
32+
::: tip Ideas for improvement?
33+
Have you found an error or is something unclear to you? Then please feel free to contact us on the <a href="https://mii.zulipchat.com/#narrow/stream/392426-Data-Sharing-Framework-.28DSF.29">MII-Zulip Channel</a> or write us at <a href="mailto:[email protected]">[email protected]</a>. Thank you very much!
34+
:::
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: BPE Reverse Proxy
3+
icon: module
4+
---
5+
## Overview
6+
- [Configuration Parameters](configuration)
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
---
2+
title: Configuration Parameters
3+
icon: config
4+
---
5+
6+
### APP_SERVER_IP
7+
- **Required:** Yes
8+
- **Description:** Hostname or IP-Address of the DSF BPE server application container, the reverse proxy target
9+
- **Example:** `app`, `172.28.1.3`
10+
11+
12+
### HTTPS_SERVER_NAME_PORT
13+
- **Required:** Yes
14+
- **Description:** FQDN of your DSF BPE server with port, typically `443`
15+
- **Example:** `my-external.fqdn:443`
16+
17+
18+
### PROXY_PASS_CONNECTION_TIMEOUT_HTTP
19+
- **Required:** No
20+
- **Description:** Connection timeout (seconds) for reverse proxy to app server http connection, time the proxy waits for a connection to be established
21+
- **Default:** `30` seconds
22+
23+
24+
### PROXY_PASS_CONNECTION_TIMEOUT_WS
25+
- **Required:** No
26+
- **Description:** Connection timeout (seconds) for reverse proxy to app server ws connection, time the proxy waits for a connection to be established
27+
- **Default:** `30` seconds
28+
29+
30+
### PROXY_PASS_TIMEOUT_HTTP
31+
- **Required:** No
32+
- **Description:** Timeout (seconds) for reverse proxy to app server http connection, time the proxy waits for a reply
33+
- **Default:** `60` seconds
34+
35+
36+
### PROXY_PASS_TIMEOUT_WS
37+
- **Required:** No
38+
- **Description:** Timeout (seconds) for reverse proxy to app server ws connection, time the proxy waits for a reply
39+
- **Default:** `60` seconds
40+
41+
42+
### SERVER_CONTEXT_PATH
43+
- **Required:** No
44+
- **Description:** Reverse proxy context path that delegates to the app server, `/` character at start, no `/` character at end, use `''` (empty string) to configure root as context path
45+
- **Default:** `/bpe`
46+
47+
48+
### SSL_CA_CERTIFICATE_FILE
49+
- **Required:** No
50+
- **Description:** Certificate chain file including all issuing, intermediate and root certificates used to validate client certificates, PEM encoded, sets the apache httpd parameter `SSLCACertificateFile`
51+
- **Recommendation:** Use docker secret file to configure
52+
- **Default:** `ca/client_cert_ca_chains.pem`
53+
54+
55+
### SSL_CA_DN_REQUEST_FILE
56+
- **Required:** No
57+
- **Description:** File containing all signing certificates excepted, will be used to specify the `Acceptable client certificate CA names` send to the client, during TLS handshake, sets the apache httpd parameter `SSLCADNRequestFile`; if omitted all entries from `SSL_CA_CERTIFICATE_FILE` are used
58+
- **Recommendation:** Use docker secret file to configure
59+
- **Default:** `ca/client_cert_issuing_cas.pem`
60+
61+
62+
### SSL_CERTIFICATE_CHAIN_FILE
63+
- **Required:** No
64+
- **Description:** Certificate chain file, PEM encoded, must contain all certificates between the server certificate and the root ca certificate (excluding the root ca certificate), sets the apache httpd parameter `SSLCertificateChainFile`; can be omitted if either no chain is needed (self signed server certificate) or the file specified via `SSL_CERTIFICATE_FILE` contains the certificate chain
65+
- **Recommendation:** Use docker secret file to configure
66+
- **Example:** `/run/secrets/ssl_certificate_chain_file.pem`
67+
68+
69+
### SSL_CERTIFICATE_FILE
70+
- **Required:** Yes
71+
- **Description:** Server certificate file, PEM encoded, sets the apache httpd parameter `SSLCertificateFile`, may contain all certificates between the server certificate and the root ca certificate (excluding the root ca certificate). Omit `SSL_CERTIFICATE_CHAIN_FILE` if chain included
72+
- **Recommendation:** Use docker secret file to configure
73+
- **Example:** `/run/secrets/ssl_certificate_file.pem`
74+
75+
76+
### SSL_CERTIFICATE_KEY_FILE
77+
- **Required:** Yes
78+
- **Description:** Server certificate private key file, PEM encoded, unencrypted, sets the apache httpd parameter `SSLCertificateKeyFile`
79+
- **Recommendation:** Use docker secret file to configure
80+
- **Example:** `/run/secrets/ssl_certificate_key_file.pem`
81+
82+
83+
### SSL_EXPECTED_CLIENT_S_DN_C_VALUES
84+
- **Required:** No
85+
- **Description:** Expected client certificate subject DN country `C` values, must be a comma-separated list of strings in single quotation marks, e.g. `'DE', 'FR'`. If a client certificate with a not configured subject country `C` value is used, the server answers with a `403 Forbidden` status code
86+
- **Default:** `'DE'`
87+
88+
89+
### SSL_EXPECTED_CLIENT_I_DN_CN_VALUES
90+
- **Required:** No
91+
- **Description:** Expected client certificate issuer DN common-name `CN` values, must be a comma-separated list of strings in single quotation marks. If a client certificate from a not configured issuing ca common-name is used, the server answers with a `403 Forbidden` status code
92+
- **Default:** `'GEANT TLS ECC 1', 'HARICA OV TLS ECC', 'GEANT TLS RSA 1', 'HARICA OV TLS RSA', 'GEANT S/MIME ECC 1', 'HARICA S/MIME ECC', 'GEANT S/MIME RSA 1', 'HARICA S/MIME RSA', 'DFN-Verein Global Issuing CA', 'Fraunhofer User CA - G02', 'D-TRUST SSL Class 3 CA 1 2009', 'Sectigo RSA Organization Validation Secure Server CA', 'GEANT OV RSA CA 4', 'GEANT Personal CA 4', 'GEANT eScience Personal CA 4', 'Sectigo ECC Organization Validation Secure Server CA', 'GEANT OV ECC CA 4', 'GEANT Personal ECC CA 4', 'GEANT eScience Personal ECC CA 4', 'D-TRUST Limited Basic CA 1-2 2019', 'D-TRUST Limited Basic CA 1-3 2019'`
93+
94+
95+
### SSL_VERIFY_CLIENT
96+
- **Required:** No
97+
- **Description:** Modifies the apache mod_ssl config parameter `SSLVerifyClient`
98+
- **Recommendation:** Set to `optional` when using OIDC authentication
99+
- **Default:** `require`
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: BPE Server
3+
icon: module
4+
---
5+
## Overview
6+
- [Configuration Parameters](configuration)
7+
- [Access Control](access-control)
8+
- [OpenID Connect](oidc)
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: Access Control
3+
icon: config
4+
---
5+
6+
## Overview
7+
8+
The DSF BPE server provides a user interface for administrators. Without any additional configuration the user interface is not accessible with the organizations X.509 client certificate or any other certificate or OpenID Connect authenticated user.
9+
10+
::: tip OpenID Connect
11+
To enable OpenID Connect authentication of local user, see the DSF BPE server OpenID Connect [configuration page](oidc).
12+
:::
13+
14+
Access to the user interface can be enabled for client certificates and local users authenticating via OAuth 2.0 OpenID Connect. Access can be configured for so called roles, with all roles specified using the configuration parameter [DEV_DSF_BPE_SERVER_ROLECONFIG](configuration#dev-dsf-bpe-server-roleconfig). The value for this environment variable is specified as YAML using the block scalar `|`.
15+
16+
The listing below shows a minimal configuration to enable access for a specific client-certificate:
17+
18+
```yaml
19+
DEV_DSF_BPE_SERVER_ROLECONFIG: |
20+
- example_read_only_role:
21+
thumbprint: 00474993fa261b0225f93c5a66aa6fcc... [a-f0-9]{128}
22+
dsf-role:
23+
- ADMIN
24+
```
25+
The list of user roles above contains a single rule-entry `example_read_only_role`, matching the user via a client certificate SHA-512 thumprint and assigning three DSF roles. Any string can be used as the name for the rule-enty.
26+
27+
::: tip Certificate Thumbprints
28+
SHA-512 certificate thumbprints in HEX form `[a-f0-9]{128}` can be calculated using:
29+
```sh
30+
certtool --fingerprint --hash=sha512 --infile=certificate.pem
31+
```
32+
:::
33+
34+
Multiple user roles can be specified and all matching roles will be applied to an authenticated users. Use an empty string `""` or a single block scalar `|` character as the value for the configuration parameter [DEV_DSF_BPE_SERVER_ROLECONFIG](configuration#dev-dsf-bpe-server-roleconfig) if no roles should be configured.
35+
36+
## Matching Users
37+
38+
To apply roles, users can be matched via the `thumbprint`, `email`, `token-role` or `token-group` properties. A single value or a list of values can be specified.
39+
40+
#### thumbprint
41+
42+
The property `thumbprint` can used to specify one or multiple SHA-512 certificate thumbprints. Roles from this rule are applied to the authenticating user if the certificate matches one of the specified thumbprints.
43+
44+
#### email
45+
46+
Using the property `email` users can be matched against e-mail addresses specified in X.509 client certificates and in OpenID Connect access tokens. Values will be matched against e-mail addresses specified in the subject DN (via PKCS#9 extension 1.2.840.113549.1.9.1) and RFC-822 Name entries of the Subject Alternative Name field. If the user authenticates via OpenID Connect, the `email` [claim](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) from the access token will be matched against the property values.
47+
48+
#### token-role and token-group
49+
50+
With the properties `token-role` and `token-group` role and group names can be specified to match against role and group claims within OAuth 2.0 access tokens.
51+
52+
53+
## DSF and Practitioner Roles
54+
55+
Two types of roles can be applied to matched users.
56+
57+
#### dsf-role
58+
59+
DSF roles specified via the `dsf-role` property define general access to the user interface. Allowed values are:
60+
61+
`ADMIN`.
62+
63+
#### practitioner-role
64+
65+
The BPE server currently does not support any practionier-roles.
66+
67+
68+
## Examples
69+
70+
The first example defines a group of DSF administrators. Two client certificates match against this role:
71+
72+
```yaml
73+
DEV_DSF_BPE_SERVER_ROLECONFIG: |
74+
- certificate-admins:
75+
thumbprint:
76+
- afb68b1d9d47e691b8b3d50fd9848467cada8b1c76f5f4b45f00c9f8432d505361a3ee27805f4aa06799d9ac8dace94b3f1942fce44d84866961259b13be825d
77+
- 2441bfddcad97eeb83c8c31fe181b90652787b8b59bf4e569219da7db4429e389479cb7c4a2f311e34217357d594ecad7d58ccfeef2a9e93c6fcf8d98897d88c
78+
dsf-role:
79+
- ADMIN
80+
```
81+
82+
83+
The second example defines a group of DSF administrators by specifying an `admin` role that gets matched against OAuth 2.0 access tokens:
84+
85+
```yaml
86+
DEV_DSF_BPE_SERVER_ROLECONFIG: |
87+
- token-role-admins:
88+
token-role: admin
89+
dsf-role:
90+
- ADMIN
91+
```
92+
93+
94+
The third example allows administrator access and users e-mail addresses to match this role. E-mail addresses from X.509 client certificates and OAuth 2.0 access tokens are matched:
95+
96+
```yaml
97+
DEV_DSF_BPE_SERVER_ROLECONFIG: |
98+
- email-admins:
99+
email:
100+
101+
102+
dsf-role:
103+
- ADMIN
104+
```

0 commit comments

Comments
 (0)