Skip to content
Snippets Groups Projects
Commit 8ef1f9d0 authored by Lilith Wittmann's avatar Lilith Wittmann
Browse files

update scopes

parent 7144db28
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,7 @@ Entsprechend [RFC 7519 Abschnnitt 8](https://tools.ietf.org/html/rfc7519#section
```json
{
"typ":"JWT",
"alg":"HS256"
"alg":"PS512"
}
```
......@@ -63,15 +63,15 @@ Entsprechend [RFC 7519 Abschnnitt 8](https://tools.ietf.org/html/rfc7519#section
Entsprechend den [standartisierten Feldern](http://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms):
| Feld | Inhalt | **Erläuterung** |
| ---------- | ------------------------------------- | ------------------------------------------------------------ |
| iat | Unix Timestamp | Zeitpunkt wann der Token ausgestellt wurde als Unix Timestamp. |
| exp | Unix Timestamp | Zeitpunkt wann der Token abläuft als Unix Timestamp (Token sollte max. 2 Stunden gültig sein vgl [BSI APP.3.1](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Kompendium_Einzel_PDFs/06_APP_Anwendungen/APP_3_1_Webanwendungen_Edition_2020.pdf?__blob=publicationFile&v=1)). |
| scope | Liste von Zustellberechtigungs-Scopes | Eine Liste der Zustellberechtigungs-Scopes, für die der JWT eine Übermittlung erlaubt. |
| sid | UUID4 der Session | Eine unique ID zur Identifizierung der Session (muss garantiert für jede Übermittlung anders sein) |
| iss | ID des Onlinedienstes | Wird bei der Anmeldung des Onlinedienstes festgelegt und dient zur Identifizierung am API-Gateway |
| domains | Liste von Domains | Eine Liste der Domains, von denen der Onlineservice Anträge übermitteln kann. Sie muss einem Subset der Domains entsprechen, die im domains Feld des Onlinedienst-JWT angegeben wurden. (Subdomains müssen explizit angegeben werden) |
| clientType | user-sender | Gibt an, das es sich um denn abgeleiteten User Token eines Onlineservices handelt, mit dem Anträge eingereicht werden können. |
| Feld | Inhalt | **Erläuterung** |
| ---------- | ------------------------- | ------------------------------------------------------------ |
| iat | Unix Timestamp | Zeitpunkt wann der Token ausgestellt wurde als Unix Timestamp. |
| exp | Unix Timestamp | Zeitpunkt wann der Token abläuft als Unix Timestamp (Token sollte max. 2 Stunden gültig sein vgl [BSI APP.3.1](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Kompendium_Einzel_PDFs/06_APP_Anwendungen/APP_3_1_Webanwendungen_Edition_2020.pdf?__blob=publicationFile&v=1)). |
| scope | Liste von Destination-IDs | Eine Liste der Destination-IDs (im Stile der Zustellberechtigungs-Scopes geprefixed), für die der JWT eine Übermittlung erlaubt. |
| sid | UUID4 der Session | Eine unique ID zur Identifizierung der Session (muss garantiert für jede Übermittlung anders sein) |
| iss | ID des Onlinedienstes | Wird bei der Anmeldung des Onlinedienstes festgelegt und dient zur Identifizierung am API-Gateway |
| domains | Liste von Domains | Eine Liste der Domains, von denen der Onlineservice Anträge übermitteln kann. Sie muss einem Subset der Domains entsprechen, die im domains Feld des Onlinedienst-JWT angegeben wurden. (Subdomains müssen explizit angegeben werden) |
| clientType | user-sender | Gibt an, das es sich um denn abgeleiteten User Token eines Onlineservices handelt, mit dem Anträge eingereicht werden können. |
**Beispiel**
......@@ -79,7 +79,7 @@ Entsprechend den [standartisierten Feldern](http://www.iana.org/assignments/jose
{
"iat":"1620072619",
"exp":"1620079819",
"scope": ["leika:99108008252000:36141427-d405-40a4-8f8b-3592d544e85b", "custom:15:655c6eb6-e80a-4d7b-a8d2-3f3250b6b9b1"],
"scope": ["destination:655c6eb6-e80a-4d7b-a8d2-3f3250b6b9b1"],
"sid": "8d4dcbfd-a528-4e9b-abc3-477c4cc857aa",
"iss": "639c5be8-eb9c-4741-834e-4ad11629898a",
"clientType": "user-sender",
......@@ -107,7 +107,7 @@ Entsprechend den [standartisierten Feldern](http://www.iana.org/assignments/jose
{
"iat":"1620072619",
"exp":"1620079819",
"scope": ["custom:15:655c6eb6-e80a-4d7b-a8d2-3f3250b6b9b1", "leika:99108008252000"],
"scope": ["leika:99108008252000", "region-leika:08110000:99108008252000"],
"clientType": "sender",
"publicKey": {
"kty": "RSA",
......@@ -138,8 +138,7 @@ Das API-Gateway muss die JWT-Tokens validieren:
4. Mithilfe des im JWT-Token des Onlinedienst enthaltenen Public Key die Signatur des User JWT überprüfen
5. Überprüfen, ob die Destination-ID teil der in den Zustellberechtigungs-Scopes (**scope** Parameter in den JWT Tokens) beider JWT-Tokens ist. (Zugangsberechtigung des Onlinedienstes und des Users). Bzw. ob die LeiKa/Region entsprechend der Destination freigegeben ist.
6. Überprüfen, ob die Website (origin), von der der Antrag abgesendet wurde, im domain Feld beider JWKs verzeichnet ist. (Verhindern von gefälschten Onlinediensten, die nicht den FIT-Connect-Standards entsprechen)
Das API-Gateway kann aufgrund der folgenden Parameter Rate-Limiting für API-Calls (angepasst an die jeweiligen Use Cases des Onlineservices) betreiben:
7. Das API-Gateway kann aufgrund der folgenden Parameter Rate-Limiting für API-Calls (angepasst an die jeweiligen Use Cases des Onlineservices) betreiben:
- sid
- IP-Addresse des Users
......
......@@ -13,7 +13,8 @@ Ein Zustellberechtigungs-Scope kann den folgenden Typen entsprechen:
| destination | destination:655c6eb6-e80a-4d7b-a8d2-3f3250b6b9b1 | Die UUID einer in FIT-Connenct angelegten Destination. |
| leika | leika:99108008252000 | LeiKa steht dafür, das die folgende ID einer Leistung im [Leistungskatalog der öffentlichen Verwaltung](https://leitfaden.ozg-umsetzung.de/display/OZG/2.1+Verwaltungsleistungen+im+Sinne+des+OZG) verzeichnet ist. |
| region | region:08110000 | Region steht für einen [Amtlichen Gemeindeschlüssel](https://de.wikipedia.org/wiki/Amtlicher_Gemeindeschl%C3%BCssel) |
| region-leika | region-leika:08110000:99108008252000 | Eine Kombination aus einem amtlichen Gemeindeschlüssel und einer LeiKa-ID. Hier erfolgt eine Einschränkung nach beiden angegeben Kriterien (Zugriff nur auf spezifische Leistung in der angegebenen Region). |
| region-leika | region:08110000+leika:99108008252000 | Eine Kombination aus einem amtlichen Gemeindeschlüssel und einer LeiKa-ID. Hier erfolgt eine Einschränkung nach beiden angegeben Kriterien (Zugriff nur auf spezifische Leistung in der angegebenen Region). |
| custom | custom:42 | Eine Leistung, die nicht im Leistungskatalog abgebildet wird. |
## Beispiele
Beschränkung auf eine spezifische Destination:
......@@ -22,6 +23,12 @@ Beschränkung auf eine spezifische Destination:
destination:655c6eb6-e80a-4d7b-a8d2-3f3250b6b9b1
```
Bei den Destinationen kann zusätzlich der Scope destination:create und destination:manage vergeben werden.
```
destination:manage:655c6eb6-e80a-4d7b-a8d2-3f3250b6b9b1
```
LeiKa-Leistung für die [Begutachung von abgeschleppten Fahrzeugen](https://fimportal.de/detail/L/99108008252000):
```
......@@ -37,19 +44,20 @@ region:08110000
Die LeiKa-Leistung für die [Begutachung von abgeschleppten Fahrzeugen](https://fimportal.de/detail/L/99108008252000) in der Region Stuttgart:
```
region-leika:08110000:99108008252000
region:08110000+leika:99108008252000
```
## Kombination verschiedener Berechtigungen
Wenn eine Liste von Zustellberechtigungsscopes angegeben wird, sind diese immer unabhängig voneinander zu betrachten. Im folgenden Fall werden sowohl alle Leistungen in der Region Stuttgart als auch die Leistung [Begutachung von abgeschleppten Fahrzeugen](https://fimportal.de/detail/L/99108008252000) in Brandenburg freigegeben:
```json
["region:08110000", "region-leika:12000000:99108008252000"]
["region:08110000", "region:12000000+leika:99108008252000"]
```
## Regex zur Validierung
```
(leika:[0-9]{1,12})|(region-leika:[0-9]{1,12}:[0-9]{1,12})|(region:[0-9]{1,12})|(destination:[0-9A-F]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89AB][0-9a-f]{3}-[0-9a-f]{12}))
(leika:[0-9]{1,12})|(region:[0-9]{1,12})|(custom:[0-9]{1,12})|(destination(:create|:manage)?:[0-9A-F]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89AB][0-9a-f]{3}-[0-9a-f]{12})
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment