2323 fetch-depth : 2 # we want the HEAD commit and the previous commit to compare changed files
2424
2525 - name : Set up Go
26- uses : actions/setup-go@v5
26+ uses : actions/setup-go@v6
2727 with :
2828 go-version-file : ' go.mod'
2929 cache : true
5252 strategy :
5353 matrix :
5454 keycloak-version :
55- - ' 26.3.3 '
55+ - ' 26.3.4 '
5656 - ' 26.2.5'
5757 - ' 26.1.4'
5858 - ' 26.0.8'
6969 uses : actions/checkout@v5
7070
7171 - name : Set up Go
72- uses : actions/setup-go@v5
72+ uses : actions/setup-go@v6
7373 with :
7474 go-version-file : ' go.mod'
7575 cache : true
@@ -81,39 +81,51 @@ jobs:
8181 terraform_version : 1.12.2
8282
8383 - name : Setup Gradle
84- uses : gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # version v4.4.2
84+ uses : gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # version v4.4.3
8585 - name : Build user-federation-example with Gradle
8686 run : make user-federation-example
8787
8888 - name : Start Keycloak Container
8989 run : |
9090 MOUNT_FEDERATION_EXAMPLE_VOLUME=""
9191 EXTRA_FEATURES=""
92- if [[ "${{ matrix.keycloak-version }}" == "26.3.3 " || "${{ matrix.keycloak-version }}" == "26.2.5" || "${{ matrix.keycloak-version }}" == "26.1.4" || "${{ matrix.keycloak-version }}" == "26.0.8" || "${{ matrix.keycloak-version }}" == "25.0.6" ]]; then
92+ if [[ "${{ matrix.keycloak-version }}" == "26.3.4 " || "${{ matrix.keycloak-version }}" == "26.2.5" || "${{ matrix.keycloak-version }}" == "26.1.4" || "${{ matrix.keycloak-version }}" == "26.0.8" || "${{ matrix.keycloak-version }}" == "25.0.6" ]]; then
9393 MOUNT_FEDERATION_EXAMPLE_VOLUME="-v $PWD/custom-user-federation-example/build/libs/custom-user-federation-example-all.jar:/opt/keycloak/providers/custom-user-federation-example-all.jar:z"
9494 fi
95- if [[ "${{ matrix.keycloak-version }}" == "26.3.3 " || "${{ matrix.keycloak-version }}" == "26.2.5" ]]; then
95+ if [[ "${{ matrix.keycloak-version }}" == "26.3.4 " || "${{ matrix.keycloak-version }}" == "26.2.5" ]]; then
9696 EXTRA_FEATURES=",admin-fine-grained-authz:v1"
97+
98+ EXTRA_HTTP_CLIENT_AUTH="-e KC_HTTPS_CLIENT_AUTH=required"
99+ EXTRA_HTTPS_CERT="-e KC_HTTPS_CERTIFICATE_FILE=/opt/keycloak/testdata/tls/server-cert.pem"
100+ EXTRA_HTTPS_KEY="-e KC_HTTPS_CERTIFICATE_KEY_FILE=/opt/keycloak/testdata/tls/server-key.pem"
101+ EXTRA_MTLS_CERTS="-e KC_TRUSTSTORE_PATHS=/opt/keycloak/testdata/tls/ca-cert.pem,/opt/keycloak/testdata/tls/client-cert.pem"
97102 fi
98103
99104 docker run -d --name keycloak \
100105 -p 8080:8080 \
106+ -p 8443:8443 \
101107 -e KC_DB=dev-mem \
102108 -e KC_LOG_LEVEL=INFO,org.keycloak:debug \
103109 -e KEYCLOAK_ADMIN=keycloak \
104110 -e KEYCLOAK_ADMIN_PASSWORD=password \
111+ -e KC_BOOTSTRAP_ADMIN_USERNAME=keycloak \
112+ -e KC_BOOTSTRAP_ADMIN_PASSWORD=password \
113+ ${EXTRA_HTTP_CLIENT_AUTH} \
114+ ${EXTRA_HTTPS_CERT} \
115+ ${EXTRA_HTTPS_KEY} \
116+ ${EXTRA_MTLS_CERTS} \
105117 -e KC_FEATURES=preview${EXTRA_FEATURES} \
106118 -e QUARKUS_HTTP_ACCESS_LOG_ENABLED=true \
107119 -e QUARKUS_HTTP_RECORD_REQUEST_START_TIME=true \
108- -v $PWD/provider/misc :/opt/keycloak/misc :z \
120+ -v $PWD/provider/testdata :/opt/keycloak/testdata :z \
109121 $MOUNT_FEDERATION_EXAMPLE_VOLUME \
110122 quay.io/keycloak/keycloak:${{ matrix.keycloak-version }} --verbose start-dev
111123
112124 - name : Initialize Keycloak
113125 run : ./scripts/wait-for-local-keycloak.sh && ./scripts/create-terraform-client.sh
114126
115127 - name : Get Keycloak Version
116- uses : actions/github-script@v7
128+ uses : actions/github-script@v8
117129 id : keycloak-version
118130 env :
119131 KEYCLOAK_VERSION : ${{ matrix.keycloak-version }}
@@ -130,9 +142,50 @@ jobs:
130142 KEYCLOAK_CLIENT_SECRET : 884e0f95-0f42-4a63-9b1f-94274655669e
131143 KEYCLOAK_CLIENT_TIMEOUT : 120
132144 KEYCLOAK_REALM : master
145+ # for mtls client auth
133146 KEYCLOAK_URL : " http://localhost:8080"
134147 KEYCLOAK_TEST_PASSWORD_GRANT : " true"
135148 KEYCLOAK_VERSION : ${{ steps.keycloak-version.outputs.result }}
149+
150+ timeout-minutes : 60
151+ # Only run mtls test for the later versions
152+ - name : Test (auth with mtls client certificate)
153+ if : matrix.keycloak-version == '26.3.4' || matrix.keycloak-version == '26.2.5'
154+ run : |
155+ terraform version
156+ go mod download
157+ make testauth
158+ env :
159+ KEYCLOAK_CLIENT_ID : terraform
160+ KEYCLOAK_CLIENT_SECRET : 884e0f95-0f42-4a63-9b1f-94274655669e
161+ KEYCLOAK_CLIENT_TIMEOUT : 120
162+ KEYCLOAK_REALM : master
163+ # for mtls client auth
164+ KEYCLOAK_URL : " https://localhost:8443"
165+ KEYCLOAK_URL_HTTP : " http://localhost:8080"
166+ KEYCLOAK_TLS_CLIENT_CERT: "-----BEGIN CERTIFICATE-----\nMIIFAjCCAuqgAwIBAgIUHeZgtpvLa35tBbH5DT92iPzan64wDQYJKoZIhvcNAQEL\nBQAwbTELMAkGA1UEBhMCVVMxEDAOBgNVBAgMB1Vua25vd24xEDAOBgNVBAcMB1Vu\na25vd24xEDAOBgNVBAoMB1Vua25vd24xEDAOBgNVBAsMB1Vua25vd24xFjAUBgNV\nBAMMDURldiBUZXN0IFJvb3QwHhcNMjUwOTIwMTkwMjU3WhcNMjcxMjI0MTkwMjU3\nWjBzMQswCQYDVQQGEwJVUzEQMA4GA1UECAwHVW5rbm93bjEQMA4GA1UEBwwHVW5r\nbm93bjEQMA4GA1UECgwHVW5rbm93bjEQMA4GA1UECwwHVW5rbm93bjEcMBoGA1UE\nAwwTdHJ1c3RlZC1jbGllbnQtbXRsczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAKfvc1qWAfE39s4RuS81RfdwXT9buwr5RLASNfPW4vZKt/iy/L+nS+SG\nXYQQeMSreZQwunFtQJF5JhxXMC4tlgAyIn2r+59c+5+9C9cbKUypV4NxtUqSjLew\nvTEKs2bu2t2cax97RtUJzPoCeD8qVi+SkyJBU0mNR7tRS2zrh2NdPMg9sBMc2HmV\nOSZ86zLvn6vSmmP9AefXvA78S3Bkj3L+fhRfqWqxYI08j2TdtLpvrvzsnJ2rqYHO\nPjgSE7GE4tbPGtSLNQU4ziEmC8bt3mdqgMUG1lBG6JrBoVMVaqH3Z86ZQr94xz9W\nAmJk646sXRa+vQmx62HOicFrA/v/Z8UCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMA4G\nA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAeBgNVHREEFzAVghN0\ncnVzdGVkLWNsaWVudC1tdGxzMB0GA1UdDgQWBBSFE0oLAkwJBwyMCCoQJXvF6Jvg\nyTAfBgNVHSMEGDAWgBT459iaWRGzTBIdUHLFon1GSQUyoTANBgkqhkiG9w0BAQsF\nAAOCAgEAZKnvqPT3lnDuuG1lJKUiDr/3qkC5TZpDLsrLaglbSwiCPVNHLgE4oq0q\n5ktzNUNx6HTLfn3dAuyd+K63/Tc3hXHDGNHQnRPRhPHGxceCIGUC7Qiqwdi6BNpr\nXJPHqMbEYWq4YHNj9aA6UYr2opp1P3KikACurN4llssx/FgHAXNPs5lD7nCxPuA+\nu2yWE+Y7kzd9PasrgFThX5Blz18H9+O0ri3T5VnYyDZ1kdALx/BzZ6BaQQEkcuh5\nVz+ZXCTNe9mtG8cFdnJUaCL6u9J6D4DfhdW40J+ZX1VJ1223CZquDXjcUUyPZPMo\n5WlTlCYodmcXCk6wtaUZ6kgUvqV61hFrcgs7byHYAtjaweulqy51QNfJT5Qhm8y+\n6b+PkWX+Gb8HKH8ceGjpJ2BA73Rb1keew77zr1/XMVWhwO524DRrXqQ4YFpK4Q3i\n9ZGhuVJCZIXhG4K+S48x/Q9AXPQ87Yk7SGxk7+/keXIpxZZiwB1TMfdpOKPH7wT1\n4wNrhiKrK4t+fSMbMvbPtFRAWGKz+dS1KRZVcGqv5qt05NDesA3pzrR9Rbyl9G4A\n2uxAeH/RjzDI/9UHfYZSOoAvsLrul7ZzIpRWpSSaK0W8Pw2iNUArYTlTpzIUxeLP\nDH309xDpOXvRgKhri6zUQYfnGv5lA2m3LEH3cVqjhACRWMg7dkM=\n-----END CERTIFICATE-----\n"
167+ KEYCLOAK_TLS_CLIENT_KEY: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCn73NalgHxN/bO\nEbkvNUX3cF0/W7sK+USwEjXz1uL2Srf4svy/p0vkhl2EEHjEq3mUMLpxbUCReSYc\nVzAuLZYAMiJ9q/ufXPufvQvXGylMqVeDcbVKkoy3sL0xCrNm7trdnGsfe0bVCcz6\nAng/KlYvkpMiQVNJjUe7UUts64djXTzIPbATHNh5lTkmfOsy75+r0ppj/QHn17wO\n/EtwZI9y/n4UX6lqsWCNPI9k3bS6b6787Jydq6mBzj44EhOxhOLWzxrUizUFOM4h\nJgvG7d5naoDFBtZQRuiawaFTFWqh92fOmUK/eMc/VgJiZOuOrF0Wvr0JsethzonB\nawP7/2fFAgMBAAECggEAA0SaSWWokq8fcxHOjr1J/USx1oJ3I1bdH/1au2yvwfyL\nk/ViYcBkWQVxsG45oL94KuAVNhEwM88tugN1q+W13jnGM2KIulMu5QQ4GhmB4Odd\nYptwhwukXWFnwm/jidnqvGvyJwyua4WN+EIwC4VMDrpFeWHYDb2ywFHBVqnxWoef\n1UhhL2w+vVDC+IVW4dd50Z4i8PU9xFUeTaKfr7tWujXGlujn57wWvr5r25WURha6\nWNBVZaoj/WSUbdD1c6a150q0GEF3Fd1ofQ1/PJRUgL5+lhdjUgBv1S2Z9/6DK4Fq\ngA8Saeh1tl85PrAbNPkz3lqoXg0HpOBd4pRYXrA4CQKBgQDo8gZocAMJzoX+6Fym\naBJWB97hcMl0YkGDl8tUaZlO0bCxh5BOGh4ZoP5e7avEXu8FbdmxNdIO5ENO80Bk\ntl2eG1S7ajdzgEoNREgUplChza6bEGAltnaloY9kzY2c/FRdqZFRPwpBB68V1n/E\nFusMJlQ09fN8SGj0GD98nCadpwKBgQC4jk+s2HnbvLCxOE852YNLS18Rlm030/ZP\ndyOVzQuHPpOghOHLVA5L10Q5bjVQGzN+bTbgB/403wAyop3oZtjOCE2qbimZxmfs\nqeJSx5OEpfqo95Eg/9WDjXMtWN8WtbYsxqOdzO+aqK1KX3aBUA/VgthBAnfWbZF1\nfNQ4euT0swKBgQDVv39xxZaEISWDSeP6LfTlTEOPydaRHLfQ8DB7PIqYcIEZ5bLc\nd8q26at/n8bFYfchnDLtEN23HG1GvJ6Ry2UL9zhA4K4RJd7NXaJmkFXcosddMiGH\neW5VfXH+pT8UldU0PKxDSP03vr1B5JlIbV8wvtr13dmWaTslADsBNKeacQKBgCpz\nucoVhXpRHge13yt8aCIStUyTYI4d+KNw0UOtBcDXWRfsWQ/vRtaVLsFTI3pIt4CW\nWLARxpycyyvakh4aQjaqXEseyfzwUYlzznaiJ8G0eEMTp1OC5bc7+0lsDuznYX9N\nNeefc2IM+MeJy/WU1/+R+HKDwdMWIwZ2b06Knk3XAoGAOCedCxVJMIR6xGw6NDDI\njWI39WpIzq7FNJGBJbjXgE0EazFClQrEsKkt4Qvi9mIkHFwLo+LbriWs5oe1V4dC\nNSgNPEtPR70LwRhp1Xr8ChMM5ZP75zYcu09O1IKrbiWGN6jJwnJxg3q4WmuB8g3o\nOValBgrKUp3ueYbmlRqLfcs=\n-----END PRIVATE KEY-----\n"
168+ KEYCLOAK_TLS_CA_CERT: "-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n"
169+ KEYCLOAK_TEST_PASSWORD_GRANT : " true"
170+ KEYCLOAK_VERSION : ${{ steps.keycloak-version.outputs.result }}
171+
172+ timeout-minutes : 60
173+
174+ - name : Test (auth with provided access token)
175+ if : matrix.keycloak-version == '26.3.4' || matrix.keycloak-version == '26.2.5'
176+ run : |
177+ terraform version
178+ go mod download
179+ make access-token
180+ export KEYCLOAK_ACCESS_TOKEN="$(cat ./keycloak_access_token)"
181+ make testauth
182+ env :
183+ KEYCLOAK_CLIENT_ID : terraform
184+ KEYCLOAK_CLIENT_TIMEOUT : 120
185+ KEYCLOAK_REALM : master
186+ KEYCLOAK_URL : " http://localhost:8080"
187+ KEYCLOAK_VERSION : ${{ steps.keycloak-version.outputs.result }}
188+
136189 timeout-minutes : 60
137190
138191 - name : Print container logs
0 commit comments