Skip to content

Commit e03b216

Browse files
authored
Add OIDC test using keycloak as idp (#7242)
1 parent 98bb4ff commit e03b216

File tree

13 files changed

+536
-42
lines changed

13 files changed

+536
-42
lines changed

.github/data/matrix-smoke-plus.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@
7676
"type": "plus",
7777
"marker": "'policies_ac or policies_jwt or policies_mtls'",
7878
"platforms": "linux/arm64, linux/amd64, linux/s390x"
79+
},
80+
{
81+
"label": "OIDC-UI 1/1",
82+
"image": "debian-plus",
83+
"type": "plus",
84+
"marker": "oidc",
85+
"platforms": "linux/arm64, linux/amd64"
7986
}
8087
],
8188
"k8s": []

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ markers =[
4545
"hsts",
4646
"ingresses",
4747
"multi_ns",
48+
"oidc",
4849
"policies",
4950
"policies_rl",
5051
"policies_jwt",

tests/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ WORKDIR /workspace/tests
1515

1616
COPY --link tests/requirements.txt /workspace/tests/
1717
RUN pip install --require-hashes -r requirements.txt --no-deps
18+
RUN playwright install --with-deps chromium
1819

1920
COPY --link deployments /workspace/deployments
2021
COPY --link config /workspace/config
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: keycloak
5+
labels:
6+
app: keycloak
7+
spec:
8+
ports:
9+
- name: http
10+
port: 8080
11+
targetPort: 8080
12+
selector:
13+
app: keycloak
14+
---
15+
apiVersion: apps/v1
16+
kind: Deployment
17+
metadata:
18+
name: keycloak
19+
labels:
20+
app: keycloak
21+
spec:
22+
replicas: 1
23+
selector:
24+
matchLabels:
25+
app: keycloak
26+
template:
27+
metadata:
28+
labels:
29+
app: keycloak
30+
spec:
31+
containers:
32+
- name: keycloak
33+
image: quay.io/keycloak/keycloak:25.0.2
34+
args: ["start-dev"]
35+
env:
36+
- name: KEYCLOAK_ADMIN
37+
value: "admin"
38+
- name: KEYCLOAK_ADMIN_PASSWORD
39+
value: "admin"
40+
- name: KC_PROXY
41+
value: "edge"
42+
ports:
43+
- name: http
44+
containerPort: 8080
45+
- name: https
46+
containerPort: 8443
47+
readinessProbe:
48+
httpGet:
49+
path: /realms/master
50+
port: 8080

tests/data/oidc/client-secret.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: oidc-secret
5+
type: nginx.org/oidc
6+
data:
7+
client-secret:

tests/data/oidc/nginx-config.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
kind: ConfigMap
2+
apiVersion: v1
3+
metadata:
4+
name: nginx-config
5+
namespace: nginx-ingress
6+
data:
7+
stream-snippets: |
8+
server {
9+
listen 12345;
10+
listen [::]:12345;
11+
zone_sync;
12+
zone_sync_server nginx-ingress-headless.nginx-ingress.svc.cluster.local:12345 resolve;
13+
}
14+
resolver-addresses: kube-dns.kube-system.svc.cluster.local
15+
resolver-valid: 5s
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: nginx-ingress-headless
5+
spec:
6+
clusterIP: None
7+
selector:
8+
app: nginx-ingress

tests/data/oidc/oidc.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: k8s.nginx.org/v1
2+
kind: Policy
3+
metadata:
4+
name: oidc-policy
5+
spec:
6+
oidc:
7+
clientID: nginx-plus
8+
clientSecret: oidc-secret
9+
authEndpoint: https://keycloak.example.com/realms/master/protocol/openid-connect/auth
10+
tokenEndpoint: http://keycloak.default.svc.cluster.local:8080/realms/master/protocol/openid-connect/token
11+
jwksURI: http://keycloak.default.svc.cluster.local:8080/realms/master/protocol/openid-connect/certs
12+
endSessionEndpoint: https://keycloak.example.com/realms/master/protocol/openid-connect/logout
13+
scope: openid+profile+email
14+
accessTokenEnable: true
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: k8s.nginx.org/v1
2+
kind: VirtualServer
3+
metadata:
4+
name: keycloak
5+
spec:
6+
host: keycloak.example.com
7+
tls:
8+
secret: tls-secret
9+
redirect:
10+
enable: true
11+
upstreams:
12+
- name: keycloak
13+
service: keycloak
14+
port: 8080
15+
routes:
16+
- path: /
17+
action:
18+
pass: keycloak
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: k8s.nginx.org/v1
2+
kind: VirtualServer
3+
metadata:
4+
name: virtual-server-tls
5+
spec:
6+
host: virtual-server-tls.example.com
7+
tls:
8+
secret: tls-secret
9+
upstreams:
10+
- name: backend1
11+
service: backend1-svc
12+
port: 80
13+
routes:
14+
- path: /
15+
policies:
16+
- name: oidc-policy
17+
action:
18+
pass: backend1

0 commit comments

Comments
 (0)