Skip to content

Commit 4bcd906

Browse files
authored
Rc/5.11.0 (#418)
* Keycloak permission manager (#387) * enable Keycloak apiKeys * setup security config and update mvn dependencies * junit missing dependency * unit test mock Jwt Decoder * fix unit test - use a JWT decoder for testing - Remove unused clases - Remove JWT expired unit tests as validation is now implemented by Spring Security * code format * test profile * docker-compose update images * add keycloak to docker compose * fix merge conflict * fix typo curl command * update keycloak system client and apikeys * version 5.11.0
1 parent 0cfd42f commit 4bcd906

Some content is hidden

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

45 files changed

+3186
-1444
lines changed

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ _ping_song_server:
7070
--retry 5 \
7171
--retry-delay 0 \
7272
--retry-max-time 40 \
73-
--retry-connrefuse \
73+
--retry-connrefused \
7474
'http://localhost:8080/isAlive'
7575
@echo ""
7676

@@ -192,10 +192,10 @@ rebuild-server: clean-mvn package
192192
rebuild-all: clean-mvn package
193193
@$(DOCKER_COMPOSE_CMD) build score-server score-client
194194

195-
# Start ego, song, and object-storage.
195+
# Start keycloak, song, and object-storage.
196196
start-deps: _setup package
197-
@echo $(YELLOW)$(INFO_HEADER) "Starting dependencies: ego, song and object-storage" $(END)
198-
@$(DC_UP_CMD) ego-api song-server object-storage
197+
@echo $(YELLOW)$(INFO_HEADER) "Starting dependencies: keycloak, song and object-storage" $(END)
198+
@$(DC_UP_CMD) keycloak-server song-server object-storage
199199

200200
# Start score-server and all dependencies. Affected by DEMO_MODE
201201
start-score-server: _setup package start-deps _setup-object-storage

docker-compose.yml

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,36 @@
11
version: '3.7'
22
services:
3-
ego-api:
4-
image: "overture/ego:3.1.0"
3+
keycloak-server:
4+
image: docker.io/bitnami/keycloak:22
55
environment:
6-
SERVER_PORT: 8080
7-
SPRING_DATASOURCE_URL: jdbc:postgresql://ego-postgres:5432/ego?stringtype=unspecified
8-
SPRING_DATASOURCE_USERNAME: postgres
9-
SPRING_DATASOURCE_PASSWORD: password
10-
SPRING_FLYWAY_ENABLED: "true"
11-
SPRING_FLYWAY_LOCATIONS: "classpath:flyway/sql,classpath:db/migration"
12-
SPRING_PROFILES: demo, auth
13-
expose:
14-
- "8080"
6+
- KC_DB=postgres
7+
- KC_DB_URL=jdbc:postgresql://keycloak-postgresql/bitnami_keycloak
8+
- KC_DB_USERNAME=bn_keycloak
9+
# default expiration days of apiKeys is 365
10+
# - APIKEY_DURATION_DAYS=365
1511
ports:
1612
- "9082:8080"
17-
command: java -jar /srv/ego/install/ego.jar
1813
depends_on:
19-
- ego-postgres
20-
ego-postgres:
21-
image: postgres:9.5
14+
- keycloak-postgresql
15+
volumes:
16+
- type: bind
17+
source: ./docker/keycloak-init/data_import
18+
target: /opt/bitnami/keycloak/data/import
19+
command:
20+
- /bin/bash
21+
- -c
22+
- |
23+
curl -sL https://github.com/oicr-softeng/keycloak-apikeys/releases/download/1.0.1/keycloak-apikeys-1.0.1.jar -o /opt/bitnami/keycloak/providers/keycloak-apikeys-1.0.1.jar
24+
kc.sh start-dev --import-realm
25+
keycloak-postgresql:
26+
image: docker.io/bitnami/postgresql:11
2227
environment:
23-
- POSTGRES_DB=ego
24-
- POSTGRES_PASSWORD=password
28+
# ALLOW_EMPTY_PASSWORD is recommended only for development.
29+
- ALLOW_EMPTY_PASSWORD=yes
30+
- POSTGRESQL_USERNAME=bn_keycloak
31+
- POSTGRESQL_DATABASE=bitnami_keycloak
2532
expose:
2633
- "5432"
27-
volumes:
28-
- "./docker/ego-init:/docker-entrypoint-initdb.d"
2934
ports:
3035
- "9444:5432"
3136
object-storage:
@@ -36,7 +41,7 @@ services:
3641
MINIO_SECRET_KEY: minio123
3742
command: server /data
3843
healthcheck:
39-
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
44+
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
4045
interval: 30s
4146
timeout: 20s
4247
retries: 3
@@ -61,11 +66,15 @@ services:
6166
S3_ACCESSKEY: minio
6267
S3_SECRETKEY: minio123
6368
S3_SIGV4ENABLED: "true"
64-
AUTH_SERVER_URL: http://ego-api:8080/o/check_api_key/
69+
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: http://keycloak-server:8080/realms/myrealm/protocol/openid-connect/certs
70+
AUTH_SERVER_URL: http://keycloak-server:8080/realms/myrealm/apikey/check_api_key/
6571
AUTH_SERVER_TOKENNAME: apiKey
66-
AUTH_SERVER_CLIENTID: score
67-
AUTH_SERVER_CLIENTSECRET: scoresecret
68-
AUTH_SERVER_SCOPE_STUDY_PREFIX: score.
72+
AUTH_SERVER_CLIENTID: system
73+
AUTH_SERVER_CLIENTSECRET: systemsecret
74+
AUTH_SERVER_PROVIDER: keycloak
75+
AUTH_SERVER_KEYCLOAK_HOST: http://keycloak-server:8080
76+
AUTH_SERVER_KEYCLOAK_REALM: myrealm
77+
AUTH_SERVER_SCOPE_STUDY_PREFIX: PROGRAMDATA.
6978
AUTH_SERVER_SCOPE_UPLOAD_SUFFIX: .WRITE
7079
AUTH_SERVER_SCOPE_DOWNLOAD_SUFFIX: .READ
7180
AUTH_SERVER_SCOPE_DOWNLOAD_SYSTEM: score.WRITE
@@ -86,7 +95,6 @@ services:
8695
depends_on:
8796
- object-storage
8897
- song-server
89-
- ego-api
9098
volumes:
9199
- "./docker/scratch/storage-server-logs:/opt/dcc/storage_server_logs"
92100
score-client:
@@ -95,7 +103,7 @@ services:
95103
dockerfile: "$DOCKERFILE_NAME"
96104
target: client
97105
environment:
98-
ACCESSTOKEN: f69b726d-d40f-4261-b105-1ec7e6bf04d5
106+
ACCESSTOKEN: 07a5a12e-a85f-4248-a9a1-851a8062b6ac
99107
METADATA_URL: http://song-server:8080
100108
STORAGE_URL: http://score-server:8080
101109
JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n
@@ -107,7 +115,7 @@ services:
107115
command: bin/score-client
108116
user: "$MY_UID:$MY_GID"
109117
song-db:
110-
image: "postgres:9.6"
118+
image: "postgres:11.1"
111119
environment:
112120
POSTGRES_DB: song
113121
POSTGRES_USER: postgres
@@ -118,6 +126,11 @@ services:
118126
- "12345:5432"
119127
volumes:
120128
- "./docker/song-db-init:/docker-entrypoint-initdb.d"
129+
healthcheck:
130+
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
131+
interval: 15s
132+
timeout: 15s
133+
retries: 5
121134
aws-cli:
122135
image: "mesosphere/aws-cli:latest"
123136
environment:
@@ -127,18 +140,23 @@ services:
127140
volumes:
128141
- "./docker/object-storage-init/data/oicr.icgc.test/data:/score-data:ro"
129142
song-server:
130-
image: overture/song-server:4.2.2
143+
image: ghcr.io/overture-stack/song-server:438c2c42
131144
environment:
132145
SERVER_PORT: 8080
133146
SPRING_PROFILES_ACTIVE: "prod,secure,default"
134-
AUTH_SERVER_URL: http://ego-api:8080/o/check_token/
135-
AUTH_SERVER_CLIENTID: song
136-
AUTH_SERVER_CLIENTSECRET: songsecret
137-
AUTH_SERVER_SCOPE_STUDY_PREFIX: song.
147+
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: http://keycloak-server:8080/realms/myrealm/protocol/openid-connect/certs
148+
AUTH_SERVER_INTROSPECTIONURI: http://keycloak-server:8080/realms/myrealm/apikey/check_api_key/
149+
AUTH_SERVER_TOKENNAME: apiKey
150+
AUTH_SERVER_CLIENTID: system
151+
AUTH_SERVER_CLIENTSECRET: systemsecret
152+
AUTH_SERVER_PROVIDER: keycloak
153+
AUTH_SERVER_KEYCLOAK_HOST: http://keycloak-server:8080
154+
AUTH_SERVER_KEYCLOAK_REALM: myrealm
155+
AUTH_SERVER_SCOPE_STUDY_PREFIX: PROGRAMDATA.
138156
AUTH_SERVER_SCOPE_STUDY_SUFFIX: .WRITE
139157
AUTH_SERVER_SCOPE_SYSTEM: song.WRITE
140158
SCORE_URL: http://score-server:8080
141-
SCORE_ACCESSTOKEN: f69b726d-d40f-4261-b105-1ec7e6bf04d5
159+
SCORE_ACCESSTOKEN: 07a5a12e-a85f-4248-a9a1-851a8062b6ac
142160
MANAGEMENT_SERVER_PORT: 8081
143161
ID_USELOCAL: "true"
144162
SPRING_DATASOURCE_USERNAME: postgres
@@ -149,8 +167,8 @@ services:
149167
ports:
150168
- "8080:8080"
151169
depends_on:
152-
- song-db
153-
- ego-api
170+
song-db:
171+
condition: service_healthy
154172
volumes:
155173
- "./docker/scratch/song-server-logs:/opt/dcc/server_logs"
156174

0 commit comments

Comments
 (0)