Skip to content

Commit 526bed0

Browse files
committed
Add JWT authentication
1 parent ed5f916 commit 526bed0

File tree

51 files changed

+527
-679
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+527
-679
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*/.*
33
!.gitignore
44
!.github
5+
!.devcontainers
56
/keycloak/*
67
target/
78
*.iml

README.md

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,62 @@
11
# Workshop API Design
2-
2+
33
Herzlich willkommen zum Workshop API Design.
4+
5+
## Aufgabe: Authentifizierung mit JWT
46

5-
## Übungen
6-
7-
### API Design
7+
Starten Sie die Services mit Docker Compose:
88

9-
- [OpenAPI](https://github.com/openknowledge/workshop-api-design/tree/openapi)
10-
- [Mocking](https://github.com/openknowledge/workshop-api-design/tree/wiremock)
11-
- [AsyncAPI](https://github.com/openknowledge/workshop-api-design/tree/asyncapi)
9+
Unter [Customer Service](http://localhost:8181/webjars/swagger-ui/index.html)
10+
erreichen Sie die Swagger UI des Customer Service.
1211

13-
### API Testing
12+
Wenn Sie dort versuchen, sich die Liste aller Kunden ausgeben zu lassen,
13+
werden Sie feststellen, dass Sie dies nicht dürfen.
1414

15-
- [Pact](https://github.com/openknowledge/workshop-api-design/tree/pact-mock-server)
16-
- [Pact Pipeline](https://github.com/openknowledge/workshop-api-design/tree/pact)
15+
### Holen eines Json Web Token
1716

18-
### API Security
17+
Mit dem folgenden HTTP-Aufruf können Sie ein Token erhalten:
18+
```
19+
POST http://localhost:9191/realms/master/protocol/openid-connect/token
20+
```
21+
Header:
22+
```
23+
Content-Type: application/x-www-form-urlencoded
24+
```
25+
Body:
26+
```
27+
grant_type:password
28+
client_id:onlineshop
29+
username:erika
30+
password:erika123
31+
```
1932

20-
- [JWT](https://github.com/openknowledge/workshop-api-design/tree/jwt)
21-
- [OAuth2](https://github.com/openknowledge/workshop-api-design/tree/oauth2)
22-
- [OAuth2 mit PKCE](https://github.com/openknowledge/workshop-api-design/tree/oauth2-pkce)
33+
Folgende Benutzer stehen zur Verfügung:
2334

24-
### API Governance
35+
* admin / admin123 (role admin)
36+
* erika / erika123 (role user)
37+
* max / max123 (role user)
38+
* james / james123 (role user)
2539

26-
- [Linting](https://github.com/openknowledge/workshop-api-design/tree/linting)
40+
Sie können die Authentifizierung auch über die
41+
[Swagger UI des Authentication Service](http://localhost:6060/)
42+
durchführen.
2743

28-
### API Management
44+
### Analysieren des Tokens
2945

30-
- [Rate Limiting](https://github.com/openknowledge/workshop-api-design/tree/rate-limiting)
31-
- [Backstage](https://github.com/openknowledge/workshop-api-design/tree/backstage)
46+
Das erhaltene Token ist base64-codiert.
47+
Man kann es sich unter [JWT.io](https://jwt.io) anschauen.
3248

33-
### API Operation
49+
### Aufruf des Services
3450

35-
- [Observability](https://github.com/openknowledge/workshop-api-design/tree/observability)
51+
Das erhaltene JWT können Sie zur Authentifizierung beim
52+
[Customer Service](http://localhost:4000/webjars/swagger-ui/index.html)
53+
verwenden.
3654

37-
### API Evolution
55+
### Authorisierung
3856

39-
- [Versioning](https://github.com/openknowledge/workshop-api-design/tree/versioning)
57+
Sie werden feststellen, dass sie auch mit dem Benutzer `erika`
58+
nicht alle Kunden sehen dürfen.
59+
Sie dürfen aber Kundendetails von `erika` (Kundennummer `0816`) sehen.
60+
Was müssen Sie tun, um alle Kunden abrufen zu können?
61+
Dürfen Sie auch die Details von Max Mustermann (Kundennummer `0815` sehen?
62+
Was ist das Problem?

address-validation-service/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
FROM maven:3.9.9-eclipse-temurin-21 AS mvn
22

3+
RUN mkdir -p /usr
34
WORKDIR /usr/src/online-shop
45
COPY pom.xml ./
56
RUN mvn package dependency:go-offline # cache dependencies

address-validation-service/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
<dependency>
6464
<groupId>org.apache.geronimo</groupId>
6565
<artifactId>geronimo-jwt-auth</artifactId>
66-
<version>1.0.4</version>
66+
<version>1.0.5</version>
6767
</dependency>
6868
<dependency>
6969
<groupId>org.apache.deltaspike.modules</groupId>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mp.jwt.verify.publickey.location=http://keycloak:8080/realms/master/protocol/openid-connect/certs
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<Configuration status="WARN">
2+
<Appenders>
3+
<Console name="Console" target="SYSTEM_OUT">
4+
<PatternLayout pattern="[logLevel=%-5p] %d [%t] %c [TraceId: %X{traceId}/SpanId: %X{spanId}]: %L - %m%n%"/>
5+
</Console>
6+
</Appenders>
7+
<Loggers>
8+
<Root level="info">
9+
<AppenderRef ref="Console"/>
10+
</Root>
11+
</Loggers>
12+
</Configuration>

address-validation-service/src/test/pacts/delivery-service-address-validation-service.json

Lines changed: 0 additions & 126 deletions
This file was deleted.

billing-service/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
FROM maven:3.9.9-eclipse-temurin-21 AS mvn
22

3+
RUN mkdir -p /usr
34
WORKDIR /usr/src/online-shop
45
COPY pom.xml ./
56
RUN mvn package dependency:go-offline # cache dependencies

billing-service/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
<dependency>
6464
<groupId>org.apache.geronimo</groupId>
6565
<artifactId>geronimo-jwt-auth</artifactId>
66-
<version>1.0.4</version>
66+
<version>1.0.5</version>
6767
</dependency>
6868
<dependency>
6969
<groupId>org.apache.deltaspike.modules</groupId>

billing-service/src/main/java/de/openknowledge/sample/address/application/AddressApplication.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@
1818
import javax.ws.rs.ApplicationPath;
1919
import javax.ws.rs.core.Application;
2020

21+
import org.eclipse.microprofile.auth.LoginConfig;
22+
2123
/**
2224
* Application initialization
2325
*/
2426
@ApplicationPath("/")
27+
@LoginConfig(authMethod = "MP-JWT")
2528
public class AddressApplication extends Application {
2629
}

0 commit comments

Comments
 (0)