Skip to content

Commit c5d27b2

Browse files
Merge pull request #24 from europace/Migrationsguide
Create migrationguide_de.md
2 parents 3143326 + cc7ce03 commit c5d27b2

4 files changed

Lines changed: 287 additions & 50 deletions

File tree

README.md

Lines changed: 73 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,98 +2,121 @@
22

33
![Check YAML with Linter](https://github.com/europace/authorization-api/workflows/Check%20yaml%20with%20Linter/badge.svg?branch=master) ![Create Scopes Doc](https://github.com/europace/authorization-api/workflows/Create%20Scopes%20Doc/badge.svg)
44

5-
Mit dieser API lässt sich ein OAuth Access Token anfordern, mit dem andere Europace-APIs verwendet werden können.
5+
Die Authorization-API stellt die Authentifizierung bei Europace für APIs zur Verfügung. Sie ist eine zwingende Voraussetzung zur Verwendung von Europace APIs.
66

7-
Diese API ist neu und es sind noch nicht alle Europace Services auf das neue Access Token umgestellt. An folgenden APIs kann das neue Access Token schon verwendet werden:
7+
> ## Migrationsguide
8+
Als Unterstützung für den Wechsel von den bisherigen Authentifizierungsverfahre auf OAuth2 gibt es diesen [Migrationsguide](https://github.com/europace/authorization-api/blob/Migrationsguide/docs/migrationguide_de.md).
9+
\
10+
\
11+
Diese Authorization-API ist neu und es sind noch nicht alle Europace Services auf das neue Access Token umgestellt. An folgenden APIs kann das neue Access Token schon verwendet werden:
812
* [BaufiSmart Anträge API](https://github.com/europace/baufismart-antraege-api)
913
* [BaufiSmart Vorgänge API](https://github.com/europace/baufismart-vorgaenge-api)
14+
* [BaufiSmart Ereignis API](https://github.com/europace/baufismart-ereignisse-api)
15+
* [BaufiSmart Angebote API](https://github.com/europace/baufismart-angebote-api)
1016
* [KreditSmart KEX Vorgang Import API](https://github.com/europace/kex-vorgang-import-api)
1117
* [KreditSmart KEX Vorgang Export API](https://github.com/europace/kex-vorgang-export-api)
1218
* [KreditSmart KEX Vorgang Update API](https://github.com/europace/kex-vorgang-update-api)
1319
* [KreditSmart KEX Angebote API](https://github.com/europace/kex-angebote-api)
1420
* [KreditSmart KEX Antragsstatus API](https://github.com/europace/kex-antragsstatus-api)
21+
* [Unterlagen API](https://github.com/europace/unterlagen-api)
1522

1623

17-
## Grundlegendes
18-
Um die Europace Plattform zu nutzen brauchst du einen registrierten Client. Die Registrierung muss von einem Admin im Partnermanagement durchgeführt werden. Eine Anleitung dafür [befindet sich hier](https://europace2.zendesk.com/hc/de/articles/360012514780).
24+
# Wie benutze ich OAuth2?
25+
Alle Europace-APIs sind zugangsbeschränkt, d.h. um sie verwenden zu können muss zuvor eine Anmeldung (Authentifizierung) bei Europace erfolgen.
1926

20-
Clients agieren im Namen von Nutzern (oder Organisationen), die im Partnermanagement hinterlegt sind. Ein registrierter Client wird durch eine `Client ID` und einem `Client Secret` identifiziert: beide werden bei der Registrierung generiert.
27+
Dabei müssen folgende Schritte durchlaufen werden:
28+
- Einmalig musst du deinen Client in Europace registrieren lassen, woraufhin du die `Client_ID` und das `Client-Secret` für den Client erhältst
29+
- Für die Anmeldung an Europace rufst du https://api.europace.de/auth/token mit der `Client_ID` und dem `Client_Secret` als Basic-Auth auf, um einen `Access_Token` zu erhalten. Die meisten HTTP Clients unterstützen OAuth2 bereits und lassen sich mit diesen Parametern konfigurieren.
30+
- Mit dem `Access_Token` als Bearer-Token kannst du Requests an den Europace APIs durchführen.
31+
Request-Header-Variable: `Authorization: Bearer [Access_Token]`
2132

22-
## Vergleich zur Vergangenheit
23-
In der Vergangenheit benötigte man eine `Partner ID` und einen `API Key`, um die Europace APIs zu nutzen. Jeder Europace Nutzer hatte automatisch einen API Zugang und konnte die APIs nutzen, vorausgesetzt `Parnter ID`und `API Key` waren ihm bekannt. Damals erfolgte der API Zugriff immer *im Namen des Nutzers*. Dieses ist nun nicht mehr so: der API Zugriff erfolgt nun im Namen eines Clients.
33+
## Wie bekomme ich einen Client registriert?
2434

25-
Es können beliebig viele Clients an einer Plakette registriert werden.
35+
<a href="mailto:helpdesk@europace2.de?subject=Registrierung API-Client&body=Hallo,%0D%0Abitte%20registriert%20einen%20API-Client%20für%20mich.%0D%0A%0D%0APartnerID:%0D%0AClient-Name:%0D%0AClient-Beschreibung:%0D%0Atechnische%20Kontakt-Email-Adresse:%0D%0Akurze%20Beschreibung%20des%20Anwendungsfalls:%0D%0Abenötigte%20Scopes:%0D%0A%0D%0AVielen%20Dank">zur Client-Registrierung</a>
2636

2737

28-
## OAuth 2.0
29-
Diese Dokumenation beschreibt den OAuth 2.0 Flow um sich an der Europace Plattform zu autorisieren. Um eine API zu verwenden, müssen folgende Schritte durchlaufen werden:
30-
1. Den Client einmalig registrieren.
31-
2. Mit der `Client ID` und dem `Client Secret` kannst du am Token-Endpoint einen Token-Request ausführen, um einen Access-Token zu erhalten.
32-
3. Mit dem Access-Token kannst du Requests an den Europace APIs durchführen.
38+
Bitte wende dich an <a href="mailto:helpdesk@europace2.de?subject=Registrierung API-Client&body=Hallo,%0D%0Abitte%20registriert%20einen%20API-Client%20für%20mich.%0D%0A%0D%0APartnerID:%0D%0AClient-Name:%0D%0AClient-Beschreibung:%0D%0Atechnische%20Kontakt-Email-Adresse:%0D%0Akurze%20Beschreibung%20des%20Anwendungsfalls:%0D%0Abenötigte%20Scopes:%0D%0A%0D%0AVielen%20Dank">helpdesk@europace.de</a> mit folgenden Daten:
39+
- EP2-PartnerId
40+
- Client-Name
41+
- Client-Beschreibung:
42+
- Kontakt-Email-Adresse für betriebliche Rückfragen
43+
- Kurze Beschreibung des Anwendungsfalls (Ziel)
44+
- benötigte Scopes
3345

46+
Nach einer kurzen Prüfung beim Eigentümer (Europace Partner) registrieren wir dir deinen Client umgehend und stellen dir die Client-ID und das Client-Secret in deiner persönlichen Linkliste in Europace zur Verfügung.
3447

35-
Bei OAuth handelt es sich um ein offenes Sicherheitsprotokoll für die tokenbasierte Autorisierung und Authentifizierung im Internet. Der Prozess zum Erhalt eines Tokens nennt sich Flow. Für mehr Information zu OAuth 2.0 siehe [oauth.net](https://oauth.net).
48+
![Linksammlung.png](https://raw.githubusercontent.com/europace/authorization-api/Migrationsguide/docs/img/Linksammlung.png "Linksammlung")
3649

50+
Bitte beachte, dass du dich mit der Benutzung der APIs automatisch mit den [Europace API-Nutzungsbedingungen](https://developer.europace.de/terms/) einverstanden erklärst.
3751

38-
### Authorization-Flows
39-
Von den vier Authorization-Flows die OAuth 2.0 spezifiziert wird aktuell nur der *Client-Credentials Flow* unterstützt.
52+
## Wie bekomme ich einen Access-Token?
53+
Für die Anmeldung an Europace rufst du `https://api.europace.de/auth/token` mit der `Client_ID` und dem `Client_Secret` als Basic-Auth auf, um einen Access_Token zu erhalten.
4054

41-
Der Client-Credentials Flow ist der einfachste Flow. Es werden die Client-Credentials direkt gegen ein
42-
Access-Token eingetauscht. Die API folgt [OAuth 2.0 Client Credentials Grant][RFC6749#4.4]. Client-Id und Client-Secret müssen per [HTTP Basic Auth]
43-
übergeben werden.
44-
45-
46-
Im einfachsten Fall genügt der Grant-Type als Parameter:
47-
48-
```http
49-
POST /auth/access-token HTTP/1.1
50-
Host: api.europace.de
51-
Authorization: Basic VVNRNEtNWTRZSFZBWE1YRDo0SmpDS3hRNVV6SVFNZDNoU2tWMEpCYjA=
52-
Content-Type: application/x-www-form-urlencoded
55+
Request:
56+
```cURL
57+
curl --location --request POST 'https://api.europace.de/auth/token' \
58+
--user '[Client_ID]:[Client_Secret]' \
59+
--header 'Content-Type: application/x-www-form-urlencoded' \
60+
--data-urlencode 'grant_type=client_credentials'
61+
```
5362

54-
grant_type=client_credentials
63+
Response:
64+
```json
65+
{ "access_token": [Access_Token],
66+
"scope": [verfügbare Scopes],
67+
"token_type": "Bearer",
68+
"expires_in": 3600 }
5569
```
5670

57-
oder als cURL-Aufruf:
71+
In diesem Fall wird ein Access-Token im Namen und im Auftrag des Partners erstellt an dem der Client registriert ist. Weitere Anwendungsfälle werden in “Alte Welt - neue Welt” behandelt.
72+
73+
## Wie rufe ich eine API mit Access-Token auf?
74+
Mit dem Access_Token als Bearer-Token kannst du Requests an den Europace APIs durchführen.
75+
Request-Header-Variable: `Authorization: Bearer [Access_Token]`
5876

59-
```bash
60-
curl "https://api.europace.de/auth/access-token" \
61-
-u USQ4KMY4YHVAXMXD:4JjCKxQ5UzIQMd3hSkV0JBb0 \
62-
-F grant_type=client_credentials
77+
Am Beispiel der Vorgaenge-API in curl:
78+
```cURL
79+
curl --location --request GET 'https://api.europace2.de/v2/vorgaenge' \
80+
--header 'Content-Type: application/json' \
81+
--header 'Authorization: Bearer [Access_Token]
6382
```
6483

6584
In diesem Fall wird ein Access-Token im Namen und im Auftrag des Partners erstellt an dem der Client
66-
[registriert](Client-Registrierung.md#client-registrierung) ist.
85+
[registriert](Client-Registrierung.md#client-registrierung) ist.
6786

6887
Neben dem Grant-Type werden folgende Request-Parameter unterstützt:
6988

7089
- ##### Grant-Type (`grant_type`)
7190
[OAuth2.0 Grant-Type][RFC6749#4], muss für den Client-Credentials-Flow `client_credentials` sein.
72-
73-
- ##### Scopes (`scope`)
91+
- ##### Scopes (`scope`)
7492
"` `"-separierte Liste von Scopes. Wird ein Subject angegeben muss `impersonieren` als Scope enthalten sein.
75-
Angefragte Scopes werden entsprechend der Rechte des Akteurs und dem
76-
Client-Approval durch den Akteur eingeschränkt. Aktuell wird der Client-Approval automatisch bei der Registrierung erteilt. Es ist möglich einen eingeschränkten Zugriff anzufragen, in dem man spezifische Scopes angibt. Ein Scope stellt eine Berechtigung zum Ausführen von Aktionen auf der Plattform dar. Werden keine Scopes angefragt ergibt sich der Scope aus den bei der Client-Registrierung hinterlegten Scopes. Die aktuell verfügbaren Scopes werden in einer [Übersicht](docs/scopes.md) gepflegt.
93+
Angefragte Scopes werden entsprechend der Rechte des Akteurs und dem Client-Approval durch den Akteur eingeschränkt. Es ist möglich einen eingeschränkten Zugriff anzufragen, in dem man spezifische Scopes angibt. Ein Scope stellt eine Berechtigung zum Ausführen von Aktionen auf der Plattform dar. Werden keine Scopes angefragt ergibt sich der Scope aus den bei der Client-Registrierung hinterlegten Scopes. Die aktuell verfügbaren Scopes werden in einer [Übersicht](docs/scopes.md) gepflegt.
7794
- ##### Akteur (`actor`)
7895
Partner-Id des Partners in dessen Auftrag der Client agiert, es muss ein
79-
[Client-Approval](Client-Approval.md#client-approval) des Akteurs für den Client vorliegen.
96+
[Client-Approval](Client-Approval.md#client-approval) des Akteurs für den Client vorliegen. Aktuell wird der Client-Approval automatisch bei der Registrierung für den Aktuer und alle Subjects im Zugriffsbereich des Clients erteilt .
8097
- ##### Subject (`subject`)
8198
Partner-Id des Partners in dessen Namen der Client agiert. Das Subject muss dem Akteur untergeordnet sein.
8299

83-
Beispiel Response:
100+
## Wie authentifiziere ich verschiedene Benutzer mit einem Client? (Impersionieren)
84101

85-
```http
86-
HTTP/1.1 200 OK
87-
Content-Type: application/json
102+
Das impersionierte OAuth2-Verfahren wird dann verwendet, wenn die API den konkreten Benutzer benötigt und man nicht für jeden Benutzer einen Client registrieren möchte. Es reicht einen Client für die Organisation zu haben, der als Generalsschlüssel fungiert und mit dem Benutzer, auf die die Organisation Zugriff hat, angemeldet werden können.
88103

89-
{
90-
"access_token":"[...opaque ASCII string...]",
91-
"token_type":"bearer",
92-
"expires_in":3600,
93-
"scope": "granted scopes"
94-
}
104+
```cURL
105+
curl --location --request POST 'https://api.europace.de/auth/token' \
106+
--user '[ClientID]:[ClientSecret]' \
107+
--header 'Content-Type: application/x-www-form-urlencoded' \
108+
--data-urlencode 'grant_type=client_credentials' \
109+
--data-urlencode 'scope=impersonieren baufinanzierung:echtgeschaeft baufinanzierung:vorgang:lesen baufinanzierung:ereignis:lesen baufinanzierung:antrag:lesen' \
110+
--data-urlencode 'subject=[anzumeldende PartnerID]' \
111+
--data-urlencode 'actor=[registrierte PartnerID]'
95112
```
96113

114+
Parameter | Beschreibung
115+
--- | ---  
116+
Subject | die Partnerid des anzumeldenden Benutzers |
117+
Actor | die Partnerid des registrierten Clients |
118+
Hinweis | die Actor-Partnerid muss in der Partnermanagementstruktur über der Subject-Partnerid angeordnet sein, da sonst die notwendigen Zugriffsrechte fehlen. |
119+
Scope | muss impersonieren enthalten (Hinweis: Wenn ein Scope angegeben wird, müssen alle erforderlichen Rechte angegeben werden, d.h. impersonieren allein macht keinen Sinn.) |
97120

98121
[JWT]: https://tools.ietf.org/html/rfc7519
99122
[ASCII]: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-006.pdf

docs/.DS_Store

6 KB
Binary file not shown.

docs/img/Linksammlung.png

98.9 KB
Loading

0 commit comments

Comments
 (0)