From 96ed969ed129d4cb9df51e961c554de81454d442 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 8 Jul 2026 08:39:24 -0400 Subject: [PATCH 01/12] update keycloak version in dockerfiles, add new config for updated version, update jar files built with new version --- dev-env/keycloak/Dockerfile | 3 ++- ...iltin-users-authenticator-1.0-SNAPSHOT.jar | Bin 230694 -> 230703 bytes dev-env/keycloak/keycloak.conf | 2 ++ dev-env/keycloak/quarkus.properties | 11 +++++++++++ dev-env/keycloak/setup-spi.sh | 8 ++++++++ dev-env/keycloak/test-realm.json | 4 ++-- dev-env/shib-dev-env/keycloak/Dockerfile | 3 ++- ...iltin-users-authenticator-1.0-SNAPSHOT.jar | Bin 230565 -> 230703 bytes dev-env/shib-dev-env/keycloak/keycloak.conf | 2 ++ .../shib-dev-env/keycloak/quarkus.properties | 11 +++++++++++ dev-env/shib-dev-env/keycloak/setup-spi.sh | 8 ++++++++ dev-env/shib-dev-env/keycloak/test-realm.json | 2 +- 12 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 dev-env/keycloak/keycloak.conf create mode 100644 dev-env/shib-dev-env/keycloak/keycloak.conf diff --git a/dev-env/keycloak/Dockerfile b/dev-env/keycloak/Dockerfile index 3b0bc8bac..85ee15ef2 100644 --- a/dev-env/keycloak/Dockerfile +++ b/dev-env/keycloak/Dockerfile @@ -1,4 +1,4 @@ -FROM quay.io/keycloak/keycloak:26.3.2 +FROM quay.io/keycloak/keycloak:26.6.4 # Add the Oracle JDBC jars ARG ORACLE_JDBC_VERSION=23.8.0.25.04 @@ -12,6 +12,7 @@ ENV KC_HEALTH_ENABLED=true COPY keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar /opt/keycloak/providers/ # Copy additional configurations +COPY keycloak.conf /opt/keycloak/conf/ COPY quarkus.properties /opt/keycloak/conf/ COPY test-realm.json /opt/keycloak/data/import/ diff --git a/dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar b/dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar index 051b8f1b394fbd2c9a6bd7de3496c629afc3f36b..9bd21227a12ac2179706a6a5a73e896bff91ad9e 100644 GIT binary patch delta 6659 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 A3;+NC delta 6406 zcmZXY30#iZ_rQCeTT1&vz3p$M^tQffS5jJ(q;*7*D3zk@LL)7VC8B3^WJt^mV;#E) zV;PbN&5WUtkey*tw&;KEd#hjO?~~qhzUSO?&$;*9`#f*Iu2A2$LR~!~l*sp!Q&Lir zyHR8rzgFE-UiKLpKlr-y!`0V!(4&_7ExcSrsG`#GzUKc% z%gM<_;{X3e`HMz*ES0C9f+6R@gjmjt38h>B6Yg>$Ot9s{n2^KA%7lY|^EL`hQc!xM zz(<@H-m6{Aeg5Yfx!a-TpF&=#3u+0gp_nQ=-9yst=tJ*0`mB$LZLK`yk zLT0~D>JY7K-}{5^tU%Y>Rn8$EMzgh34?f&u^>c-7fucpf+DOhm@bU&1vBs&|CmGt# z$$RTs4a++e!p3R+aI{+OZAXH2XY){6>S()}dh2iWk&|1b{oh)J(Hb!<|EtDM2b(lL z@htVb+8;P3HTDZ3%)?qVnh8~wP6rQ)PRVy;rxKIC!mq|gY`|6HWnDqy#jz}iu**K| zATdA00v)Wfe4)sEciAuK@|8&2x~6H0))%~7ESW>HO8|2aC_eATu<*+5fPC{@qj=#b zcP}P9aF1rfV2_1NIOdU-Ta(!+)javwHs;6JlDVb2N-^A&NfjXnMbqQnUWzCRbKE*2 z>OjHP&Vhwjq=;{!}+@`R(id7r}(7$O4}G65bX=F*{Ipzm8;~IyCK_V z&$|seyG7xHlhqnDGxWVI_IdnLee$A}3V3f@`AiA&U1^tba z)+TBBx9ikB)fqe8TjP44d-ujzw=Y{>zf?{BchBsLH;3()PmWSl^oWk$V7=}61M>jO z)hZ>Q^i>m0i?Xf;J#d`&&g_zHYrSi3-J3#7A#LfLqL;5ve@NO;KVVzmi7`P-PBeST z<^Q^9(wX(j#x9~_2O>A3BLCAN*U`UUt3M)%Nc`dZHEw2WB#nEHi!-0)bY`3@xcj!s zYM9^J!tE~g3tdy4R{1}?(3l@_Z0m0;owV($SDZR-EuOQyX`4q;#D^6n>t|<$FEgCw zFP|Ixs3h`YFeuJgP06>~l36C0|O^ z?yon#^e))9@=1GQ_SxTd9ZQiIthzSa>*x7}PtE_>vwU~Uj2k;=4A*F?J$9k4dWu%+ zaB<_i8p&$O^viS0Y@&?M_-EhVx>}*$)v|0#Sj*mn%4zLY|85`i%=Tvcv<2Lqea1e` z+1E?<<}aUmCN9^!^^S@9%jJ4ohqO9+K37@cX8UpIjayAATN|Tv%DoSSSWW+AzN92I z|61DXNK^9eR#Ehrk-r@9=)5IvC@+k^^Q`pB{9#{wKh#Zl;=E(!uD5M%Fm!N-T$_*j z_0>tWWz9xg+N2J)xJwiRQ6&hD1(IOQZMQKyT54IPdS`yt$)s-n{n% z*}V!IOo_W1we{SdaMzT$%FZg>&L;+0Mb|Z zM?(vCTXd&<0?mAlHl4#+Fx63pl>@rMzw{q1{u|@B<0T*bRrm|wJAkk!6Z|j$$Lok# zjtv7ye_6@LwN;w(uw(};IpC|Y)0nGpP-FpVW4g1TQMg1{Y)L#>)+a3y9H+nmURx0@ z(6b`i%w%tcGX{wv&yv_vn>H-7B8IYQ*Ug-JSirthQvC0TTVli84iO@T^oP$Va~Hwdjtu3zA396+yYuYrK@r#tW@YR_pi(sS^@#Gt4psWYwPQ-^FHA~ns zM_(wKr44-t;R@u;LERiS`C^dNK^Wwhc?gVP^C05J+sp?iXCfA|=Bv}z*M$DgSVuNU zoyl0fb|Ex76C*)2N1f$xo*K*Go--N4>n)}u^?b5Y5cDMCoTDqRj6er^G?wz^<> zw+e;pOD!PG6(`)i6lHsecfz^Ox?(mnmQ$l}Y`F@ky5YzhD}=~mJqULrzT8?^<3=L+ z`>PO{0OyX&V^@r_6^wO9*9B{+YspUvaDO<_g`@5m?$z3E_K!Om%3l(?)sY^UN&dQS zb+ZR9TWe{z+U`Nz`7;~4)lg4dNK(H}&C@cT!oX*l7fNJuu=Q)Zx^wF4(7J zw?5;p-njAx5aCTCxc#ujn?&*Q`ytYs=n202HDLE>9BVrS$DUyn5{6*^BpqTdn-6Kg zli}!6PhC0=3uZ@b=xS?%wGV==M-dpqL?2AK{5Z;bLc?)osPe&bf=+?cP$Gg(A0p+J zf^;Yu#lJW$Xq_>Gqf!j8e<%i+au$I|*mhO}rr@Pg>Pt-cr{^dG4_`8bue>1Z^(J4U z4B(5qs9)0!y!b1Zs4OVeYS4bwgh)S(XmLeot``Z3R}`Vh57U@jhq?jO`wFGzXY?}A|d@Rb+|VS1DO3S(-Zzy10|ZbpFcWj-9l&t z^ZhZU!UmL$;i5mbb4Me}*6hf*1)$@HJ2J=205X`*Ym&((fmqD709=)ezy;!gD10E} z^8$$nrwRK4Ni3i72$4RR2N7rf)??ToL<|M}Cpu8&fEla{!Yz%2eL?6L@SGa0z;QTn z;R#-VeuA0$(%i7)*ET4GVhrjS8#|#xggwG7#RTBfMhrQM#b(epk_7M@)tNFb47cuFf2RBzhP}2H zFAD0WF$&jbx41`9gz2MjYm+Q`k$o1NB5UK8QMegrOT$S#zut;@EDFb5o)2V7q5~%n zcfxV9H4;Xo5yYSW#;%unvmK|*q8*CBd<`6WY%0(ZfyK{pWTeWm+c7B;9h0OKi=aZv z8Oa*>9HotedZ-%6N8#ml(UlTCh>F6>l--#UdiZK9ng}LpeQ}%L(c- zC5+M2qqsh>GYs2C_Ege}Mca~5JvLL>h?$gTM=<&^mZ$?6gy~$Q_(oI@9?HAKFeNJn zpZ5*%Sbp{x^zj&NwA9jF9~$tZy>1BEGO>GnOS!&~ z(t^*5+-%H$^?ahLVe-`%hgRws%KJS6zbqnw;zxKwWy@=sh0EIlzFD|cr=L@+7*1qi zLchIWis@_Y5!30oq7DD_5OpY;PP^_6BR8kx8cqI}DMM!9i{qSDrfiyluM0=sGUd}- zP8T$0;=q&bjKt5xxVPRh#pFF6$69J0^Qmj}CoE}t7MA2W3m2ohgJIRr_#Rk13mqSS zX2k9b9=bbo(D5U6+}6qP^G?5_>its=|zg?;;!4M^&(knIFW46 z6zAbYo!z!iVCk z#Q;(k5Km5kiUlNr5845Fi-;>!?BM%=*FucAU?(LB@OdY%1Xn2G_b~E02hT@h4!%0( z!rC0Ng*QFS3?<)Ubn{B4{9MUf$X=&G?1(Eec@g$%3M^hkin;rsnM-{eg7BM+Si%BIGLc}ruPVfs;nOD6RRS7Ih(Vt`Q~cYB-2Va0 C5_?(z diff --git a/dev-env/keycloak/keycloak.conf b/dev-env/keycloak/keycloak.conf new file mode 100644 index 000000000..96a9fd708 --- /dev/null +++ b/dev-env/keycloak/keycloak.conf @@ -0,0 +1,2 @@ +db-kind-user-store=postgres +db-kind-user-store-qa=postgres diff --git a/dev-env/keycloak/quarkus.properties b/dev-env/keycloak/quarkus.properties index 64ce6d898..302efba14 100644 --- a/dev-env/keycloak/quarkus.properties +++ b/dev-env/keycloak/quarkus.properties @@ -13,3 +13,14 @@ quarkus.datasource.user-store.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} quarkus.datasource.user-store.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} quarkus.datasource.user-store.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} quarkus.datasource.user-store.jdbc.xa-properties.databaseName=dataverse + +quarkus.datasource.user-store-qa.jdbc.url=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse +quarkus.datasource.user-store-qa.username=${DATAVERSE_DB_USER} +quarkus.datasource.user-store-qa.password=${DATAVERSE_DB_PASSWORD} +quarkus.datasource.user-store-qa.jdbc.driver=org.postgresql.Driver +quarkus.datasource.user-store-qa.jdbc.transactions=disabled +quarkus.datasource.user-store-qa.jdbc.recovery.username=${DATAVERSE_DB_USER} +quarkus.datasource.user-store-qa.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} +quarkus.datasource.user-store-qa.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} +quarkus.datasource.user-store-qa.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} +quarkus.datasource.user-store-qa.jdbc.xa-properties.databaseName=dataverse diff --git a/dev-env/keycloak/setup-spi.sh b/dev-env/keycloak/setup-spi.sh index 5e0fa29f7..bd6924a07 100755 --- a/dev-env/keycloak/setup-spi.sh +++ b/dev-env/keycloak/setup-spi.sh @@ -27,6 +27,14 @@ ADMIN_TOKEN=$(curl -s -X POST "http://keycloak:9080/realms/master/protocol/openi -d "grant_type=password" \ -d "client_id=admin-cli" | jq -r .access_token) +EXISTING_SPI_COUNT=$(curl -s "http://keycloak:9080/admin/realms/test/components" \ + -H "Authorization: Bearer $ADMIN_TOKEN" | jq '[.[] | select(.providerId == "dv-builtin-users-authenticator" and .providerType == "org.keycloak.storage.UserStorageProvider")] | length') + +if [ "$EXISTING_SPI_COUNT" -gt 0 ]; then + echo "Keycloak SPI already configured in realm." + exit 0 +fi + # Create user storage provider using the components endpoint curl -X POST "http://keycloak:9080/admin/realms/test/components" \ -H "Authorization: Bearer $ADMIN_TOKEN" \ diff --git a/dev-env/keycloak/test-realm.json b/dev-env/keycloak/test-realm.json index 571a1e80f..53e3d32af 100644 --- a/dev-env/keycloak/test-realm.json +++ b/dev-env/keycloak/test-realm.json @@ -2396,7 +2396,7 @@ "clientSessionMaxLifespan": "0", "frontendUrl": "" }, - "keycloakVersion": "26.3.2", + "keycloakVersion": "26.6.4", "userManagedAccessAllowed": false, "organizationsEnabled": false, "verifiableCredentialsEnabled": false, @@ -2407,4 +2407,4 @@ "clientPolicies": { "policies": [] } -} \ No newline at end of file +} diff --git a/dev-env/shib-dev-env/keycloak/Dockerfile b/dev-env/shib-dev-env/keycloak/Dockerfile index 3b0bc8bac..85ee15ef2 100644 --- a/dev-env/shib-dev-env/keycloak/Dockerfile +++ b/dev-env/shib-dev-env/keycloak/Dockerfile @@ -1,4 +1,4 @@ -FROM quay.io/keycloak/keycloak:26.3.2 +FROM quay.io/keycloak/keycloak:26.6.4 # Add the Oracle JDBC jars ARG ORACLE_JDBC_VERSION=23.8.0.25.04 @@ -12,6 +12,7 @@ ENV KC_HEALTH_ENABLED=true COPY keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar /opt/keycloak/providers/ # Copy additional configurations +COPY keycloak.conf /opt/keycloak/conf/ COPY quarkus.properties /opt/keycloak/conf/ COPY test-realm.json /opt/keycloak/data/import/ diff --git a/dev-env/shib-dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar b/dev-env/shib-dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar index 3aa3ba47ae4b10ec6d98171cfa46b6cacc4ab155..9bd21227a12ac2179706a6a5a73e896bff91ad9e 100644 GIT binary patch delta 7160 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 a9_EF}95s#ji7VogLZmFUN*Dg}!udZkfQwK7 delta 6754 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 G(SHHPI^e$m diff --git a/dev-env/shib-dev-env/keycloak/keycloak.conf b/dev-env/shib-dev-env/keycloak/keycloak.conf new file mode 100644 index 000000000..96a9fd708 --- /dev/null +++ b/dev-env/shib-dev-env/keycloak/keycloak.conf @@ -0,0 +1,2 @@ +db-kind-user-store=postgres +db-kind-user-store-qa=postgres diff --git a/dev-env/shib-dev-env/keycloak/quarkus.properties b/dev-env/shib-dev-env/keycloak/quarkus.properties index 64ce6d898..302efba14 100644 --- a/dev-env/shib-dev-env/keycloak/quarkus.properties +++ b/dev-env/shib-dev-env/keycloak/quarkus.properties @@ -13,3 +13,14 @@ quarkus.datasource.user-store.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} quarkus.datasource.user-store.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} quarkus.datasource.user-store.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} quarkus.datasource.user-store.jdbc.xa-properties.databaseName=dataverse + +quarkus.datasource.user-store-qa.jdbc.url=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse +quarkus.datasource.user-store-qa.username=${DATAVERSE_DB_USER} +quarkus.datasource.user-store-qa.password=${DATAVERSE_DB_PASSWORD} +quarkus.datasource.user-store-qa.jdbc.driver=org.postgresql.Driver +quarkus.datasource.user-store-qa.jdbc.transactions=disabled +quarkus.datasource.user-store-qa.jdbc.recovery.username=${DATAVERSE_DB_USER} +quarkus.datasource.user-store-qa.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} +quarkus.datasource.user-store-qa.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} +quarkus.datasource.user-store-qa.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} +quarkus.datasource.user-store-qa.jdbc.xa-properties.databaseName=dataverse diff --git a/dev-env/shib-dev-env/keycloak/setup-spi.sh b/dev-env/shib-dev-env/keycloak/setup-spi.sh index 5e0fa29f7..bd6924a07 100755 --- a/dev-env/shib-dev-env/keycloak/setup-spi.sh +++ b/dev-env/shib-dev-env/keycloak/setup-spi.sh @@ -27,6 +27,14 @@ ADMIN_TOKEN=$(curl -s -X POST "http://keycloak:9080/realms/master/protocol/openi -d "grant_type=password" \ -d "client_id=admin-cli" | jq -r .access_token) +EXISTING_SPI_COUNT=$(curl -s "http://keycloak:9080/admin/realms/test/components" \ + -H "Authorization: Bearer $ADMIN_TOKEN" | jq '[.[] | select(.providerId == "dv-builtin-users-authenticator" and .providerType == "org.keycloak.storage.UserStorageProvider")] | length') + +if [ "$EXISTING_SPI_COUNT" -gt 0 ]; then + echo "Keycloak SPI already configured in realm." + exit 0 +fi + # Create user storage provider using the components endpoint curl -X POST "http://keycloak:9080/admin/realms/test/components" \ -H "Authorization: Bearer $ADMIN_TOKEN" \ diff --git a/dev-env/shib-dev-env/keycloak/test-realm.json b/dev-env/shib-dev-env/keycloak/test-realm.json index 0b53d51db..65552820e 100644 --- a/dev-env/shib-dev-env/keycloak/test-realm.json +++ b/dev-env/shib-dev-env/keycloak/test-realm.json @@ -2636,7 +2636,7 @@ "frontendUrl": "https://localhost", "acr.loa.map": "{}" }, - "keycloakVersion": "26.1.4", + "keycloakVersion": "26.6.4", "userManagedAccessAllowed": false, "organizationsEnabled": false, "verifiableCredentialsEnabled": false, From 6c07022f9daa0ed8099dc72dfaf76a1e258b5214 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 8 Jul 2026 09:41:38 -0400 Subject: [PATCH 02/12] specify allowed redirectUris and webOrigins --- dev-env/keycloak/test-realm.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dev-env/keycloak/test-realm.json b/dev-env/keycloak/test-realm.json index 53e3d32af..ae1949a6a 100644 --- a/dev-env/keycloak/test-realm.json +++ b/dev-env/keycloak/test-realm.json @@ -842,9 +842,11 @@ "alwaysDisplayInConsole": false, "clientAuthenticatorType": "client-secret", "redirectUris": [ - "*" + "http://localhost:8000/modern/*" + ], + "webOrigins": [ + "http://localhost:8000" ], - "webOrigins": [], "notBefore": 0, "bearerOnly": false, "consentRequired": false, From 3a6bef22a491c42bbc4882c5cbc97f8df2a6e4d0 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 15 Jul 2026 09:19:46 -0400 Subject: [PATCH 03/12] debug deploy action --- .github/workflows/test-beta-ssh.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/test-beta-ssh.yml diff --git a/.github/workflows/test-beta-ssh.yml b/.github/workflows/test-beta-ssh.yml new file mode 100644 index 000000000..ff7e8a806 --- /dev/null +++ b/.github/workflows/test-beta-ssh.yml @@ -0,0 +1,13 @@ +name: Test Beta SSH + +on: + workflow_dispatch: + +jobs: + test-beta-ssh: + runs-on: ubuntu-latest + + steps: + - name: Check SSH port + run: | + nc -vz -w 10 "${{ secrets.BETA_PAYARA_INSTANCE_HOST }}" 22 From 88203887d2d120feafc12d5b4dd47b24623f7b1c Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 15 Jul 2026 09:29:03 -0400 Subject: [PATCH 04/12] run test on PR branch --- .github/workflows/test-beta-ssh.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test-beta-ssh.yml b/.github/workflows/test-beta-ssh.yml index ff7e8a806..6a4edbb52 100644 --- a/.github/workflows/test-beta-ssh.yml +++ b/.github/workflows/test-beta-ssh.yml @@ -2,6 +2,11 @@ name: Test Beta SSH on: workflow_dispatch: + pull_request: + branches: + - develop + paths: + - '.github/workflows/test-beta-ssh.yml' jobs: test-beta-ssh: From b15926e07f70c9e85d83695f5b8acb3c1072f741 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 15 Jul 2026 09:38:44 -0400 Subject: [PATCH 05/12] run test in existing workflow --- .github/workflows/lint.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fb42ddcdd..997a7ff87 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,6 +6,14 @@ on: types: [opened, reopened] jobs: + test-beta-ssh: + runs-on: ubuntu-latest + + steps: + - name: Check SSH port + run: | + nc -vz -w 10 "${{ secrets.BETA_PAYARA_INSTANCE_HOST }}" 22 + lint: runs-on: ubuntu-latest From 3b7b5fa9e17a67293000059509de6bb0285f9bda Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 15 Jul 2026 09:43:08 -0400 Subject: [PATCH 06/12] Test beta SSH login and write access --- .github/workflows/test-beta-ssh.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/test-beta-ssh.yml b/.github/workflows/test-beta-ssh.yml index 6a4edbb52..62e07f49d 100644 --- a/.github/workflows/test-beta-ssh.yml +++ b/.github/workflows/test-beta-ssh.yml @@ -16,3 +16,16 @@ jobs: - name: Check SSH port run: | nc -vz -w 10 "${{ secrets.BETA_PAYARA_INSTANCE_HOST }}" 22 + + - name: Test SSH login and writable target + uses: appleboy/ssh-action@v1.2.2 + with: + host: ${{ secrets.BETA_PAYARA_INSTANCE_HOST }} + username: ${{ secrets.BETA_PAYARA_INSTANCE_USERNAME }} + key: ${{ secrets.BETA_PAYARA_INSTANCE_SSH_PRIVATE_KEY }} + script: | + whoami + pwd + mkdir -p ~/github-actions-upload-test + echo ok > ~/github-actions-upload-test/probe.txt + ls -l ~/github-actions-upload-test/probe.txt From 2046c0103df00861510d5bebdff1f7439415b210 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 15 Jul 2026 14:00:29 -0400 Subject: [PATCH 07/12] test path fix --- .github/workflows/test-beta-ssh.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/test-beta-ssh.yml b/.github/workflows/test-beta-ssh.yml index 62e07f49d..e52a5c8d5 100644 --- a/.github/workflows/test-beta-ssh.yml +++ b/.github/workflows/test-beta-ssh.yml @@ -29,3 +29,15 @@ jobs: mkdir -p ~/github-actions-upload-test echo ok > ~/github-actions-upload-test/probe.txt ls -l ~/github-actions-upload-test/probe.txt + + - name: Test Payara asadmin path + uses: appleboy/ssh-action@v1.2.2 + with: + host: ${{ secrets.BETA_PAYARA_INSTANCE_HOST }} + username: ${{ secrets.BETA_PAYARA_INSTANCE_USERNAME }} + key: ${{ secrets.BETA_PAYARA_INSTANCE_SSH_PRIVATE_KEY }} + script: | + ASADMIN='/usr/local/payara7/bin/asadmin --user admin' + test -x /usr/local/payara7/bin/asadmin + $ASADMIN version + $ASADMIN list-applications From e6ec6ec53ea2fdfe9bf55e8ec0f1e1fde71a6bb4 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Wed, 22 Jul 2026 15:12:41 -0400 Subject: [PATCH 08/12] remove test code --- .github/workflows/lint.yml | 58 +++++++++++++---------------- .github/workflows/test-beta-ssh.yml | 43 --------------------- 2 files changed, 25 insertions(+), 76 deletions(-) delete mode 100644 .github/workflows/test-beta-ssh.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 997a7ff87..5e2480d7f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,46 +6,38 @@ on: types: [opened, reopened] jobs: - test-beta-ssh: - runs-on: ubuntu-latest - - steps: - - name: Check SSH port - run: | - nc -vz -w 10 "${{ secrets.BETA_PAYARA_INSTANCE_HOST }}" 22 - lint: - runs-on: ubuntu-latest + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 + steps: + - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 22 - cache: 'npm' + - uses: actions/setup-node@v3 + with: + node-version: 22 + cache: 'npm' - - name: Create .npmrc - run: | - cp .npmrc.example .npmrc - sed -i -e 's//${{ secrets.GITHUB_TOKEN }}/g' .npmrc - sed -i -e 's//${{ secrets.NPM_AUTH_TOKEN }}/g' .npmrc + - name: Create .npmrc + run: | + cp .npmrc.example .npmrc + sed -i -e 's//${{ secrets.GITHUB_TOKEN }}/g' .npmrc + sed -i -e 's//${{ secrets.NPM_AUTH_TOKEN }}/g' .npmrc - - name: Install Dependencies - run: npm install + - name: Install Dependencies + run: npm install - - name: Build Dataverse UI Library - working-directory: packages/design-system - run: npm run build + - name: Build Dataverse UI Library + working-directory: packages/design-system + run: npm run build - - name: Type check - run: tsc --noEmit + - name: Type check + run: tsc --noEmit - - name: ESLint - run: npm run lint:eslint + - name: ESLint + run: npm run lint:eslint - - name: Stylelint - run: npm run lint:stylelint + - name: Stylelint + run: npm run lint:stylelint - - name: Prettier - run: npm run lint:prettier + - name: Prettier + run: npm run lint:prettier diff --git a/.github/workflows/test-beta-ssh.yml b/.github/workflows/test-beta-ssh.yml deleted file mode 100644 index e52a5c8d5..000000000 --- a/.github/workflows/test-beta-ssh.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Test Beta SSH - -on: - workflow_dispatch: - pull_request: - branches: - - develop - paths: - - '.github/workflows/test-beta-ssh.yml' - -jobs: - test-beta-ssh: - runs-on: ubuntu-latest - - steps: - - name: Check SSH port - run: | - nc -vz -w 10 "${{ secrets.BETA_PAYARA_INSTANCE_HOST }}" 22 - - - name: Test SSH login and writable target - uses: appleboy/ssh-action@v1.2.2 - with: - host: ${{ secrets.BETA_PAYARA_INSTANCE_HOST }} - username: ${{ secrets.BETA_PAYARA_INSTANCE_USERNAME }} - key: ${{ secrets.BETA_PAYARA_INSTANCE_SSH_PRIVATE_KEY }} - script: | - whoami - pwd - mkdir -p ~/github-actions-upload-test - echo ok > ~/github-actions-upload-test/probe.txt - ls -l ~/github-actions-upload-test/probe.txt - - - name: Test Payara asadmin path - uses: appleboy/ssh-action@v1.2.2 - with: - host: ${{ secrets.BETA_PAYARA_INSTANCE_HOST }} - username: ${{ secrets.BETA_PAYARA_INSTANCE_USERNAME }} - key: ${{ secrets.BETA_PAYARA_INSTANCE_SSH_PRIVATE_KEY }} - script: | - ASADMIN='/usr/local/payara7/bin/asadmin --user admin' - test -x /usr/local/payara7/bin/asadmin - $ASADMIN version - $ASADMIN list-applications From ecfed47d6ab49d2d005abcff0767f93a66161d8f Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Thu, 23 Jul 2026 14:39:58 -0400 Subject: [PATCH 09/12] upgrade to Keycloak 26.7.0 --- dev-env/keycloak/Dockerfile | 2 +- ...iltin-users-authenticator-1.0-SNAPSHOT.jar | Bin 230703 -> 230704 bytes dev-env/keycloak/keycloak.conf | 11 ++++++++ dev-env/keycloak/quarkus.properties | 25 ------------------ dev-env/keycloak/test-realm.json | 2 +- dev-env/shib-dev-env/keycloak/Dockerfile | 2 +- ...iltin-users-authenticator-1.0-SNAPSHOT.jar | Bin 230703 -> 230704 bytes dev-env/shib-dev-env/keycloak/keycloak.conf | 11 ++++++++ .../shib-dev-env/keycloak/quarkus.properties | 25 ------------------ dev-env/shib-dev-env/keycloak/test-realm.json | 2 +- 10 files changed, 26 insertions(+), 54 deletions(-) diff --git a/dev-env/keycloak/Dockerfile b/dev-env/keycloak/Dockerfile index 85ee15ef2..1628cf148 100644 --- a/dev-env/keycloak/Dockerfile +++ b/dev-env/keycloak/Dockerfile @@ -1,4 +1,4 @@ -FROM quay.io/keycloak/keycloak:26.6.4 +FROM quay.io/keycloak/keycloak:26.7.0 # Add the Oracle JDBC jars ARG ORACLE_JDBC_VERSION=23.8.0.25.04 diff --git a/dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar b/dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar index 9bd21227a12ac2179706a6a5a73e896bff91ad9e..cc16863afd94e7e1311c6ab149b81c6d56048b5d 100644 GIT binary patch delta 5506 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 diff --git a/dev-env/keycloak/keycloak.conf b/dev-env/keycloak/keycloak.conf index 96a9fd708..a0e13128e 100644 --- a/dev-env/keycloak/keycloak.conf +++ b/dev-env/keycloak/keycloak.conf @@ -1,2 +1,13 @@ db-kind-user-store=postgres +db-url-full-user-store=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse +db-username-user-store=${DATAVERSE_DB_USER} +db-password-user-store=${DATAVERSE_DB_PASSWORD} +db-driver-user-store=org.postgresql.Driver +transaction-xa-enabled-user-store=false + db-kind-user-store-qa=postgres +db-url-full-user-store-qa=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse +db-username-user-store-qa=${DATAVERSE_DB_USER} +db-password-user-store-qa=${DATAVERSE_DB_PASSWORD} +db-driver-user-store-qa=org.postgresql.Driver +transaction-xa-enabled-user-store-qa=false diff --git a/dev-env/keycloak/quarkus.properties b/dev-env/keycloak/quarkus.properties index 302efba14..ebb14d8f4 100644 --- a/dev-env/keycloak/quarkus.properties +++ b/dev-env/keycloak/quarkus.properties @@ -1,26 +1 @@ -quarkus.datasource.user-store.db-kind=postgresql -quarkus.datasource.user-store.jdbc.url=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse -quarkus.datasource.user-store.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store.password=${DATAVERSE_DB_PASSWORD} - -quarkus.datasource.user-store.jdbc.driver=org.postgresql.Driver -quarkus.datasource.user-store.jdbc.transactions=disabled quarkus.transaction-manager.unsafe-multiple-last-resources=allow - -quarkus.datasource.user-store.jdbc.recovery.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} - -quarkus.datasource.user-store.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} -quarkus.datasource.user-store.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} -quarkus.datasource.user-store.jdbc.xa-properties.databaseName=dataverse - -quarkus.datasource.user-store-qa.jdbc.url=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse -quarkus.datasource.user-store-qa.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store-qa.password=${DATAVERSE_DB_PASSWORD} -quarkus.datasource.user-store-qa.jdbc.driver=org.postgresql.Driver -quarkus.datasource.user-store-qa.jdbc.transactions=disabled -quarkus.datasource.user-store-qa.jdbc.recovery.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store-qa.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} -quarkus.datasource.user-store-qa.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} -quarkus.datasource.user-store-qa.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} -quarkus.datasource.user-store-qa.jdbc.xa-properties.databaseName=dataverse diff --git a/dev-env/keycloak/test-realm.json b/dev-env/keycloak/test-realm.json index ae1949a6a..7921e6e26 100644 --- a/dev-env/keycloak/test-realm.json +++ b/dev-env/keycloak/test-realm.json @@ -2398,7 +2398,7 @@ "clientSessionMaxLifespan": "0", "frontendUrl": "" }, - "keycloakVersion": "26.6.4", + "keycloakVersion": "26.7.0", "userManagedAccessAllowed": false, "organizationsEnabled": false, "verifiableCredentialsEnabled": false, diff --git a/dev-env/shib-dev-env/keycloak/Dockerfile b/dev-env/shib-dev-env/keycloak/Dockerfile index 85ee15ef2..1628cf148 100644 --- a/dev-env/shib-dev-env/keycloak/Dockerfile +++ b/dev-env/shib-dev-env/keycloak/Dockerfile @@ -1,4 +1,4 @@ -FROM quay.io/keycloak/keycloak:26.6.4 +FROM quay.io/keycloak/keycloak:26.7.0 # Add the Oracle JDBC jars ARG ORACLE_JDBC_VERSION=23.8.0.25.04 diff --git a/dev-env/shib-dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar b/dev-env/shib-dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar index 9bd21227a12ac2179706a6a5a73e896bff91ad9e..cc16863afd94e7e1311c6ab149b81c6d56048b5d 100644 GIT binary patch delta 5506 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 diff --git a/dev-env/shib-dev-env/keycloak/keycloak.conf b/dev-env/shib-dev-env/keycloak/keycloak.conf index 96a9fd708..a0e13128e 100644 --- a/dev-env/shib-dev-env/keycloak/keycloak.conf +++ b/dev-env/shib-dev-env/keycloak/keycloak.conf @@ -1,2 +1,13 @@ db-kind-user-store=postgres +db-url-full-user-store=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse +db-username-user-store=${DATAVERSE_DB_USER} +db-password-user-store=${DATAVERSE_DB_PASSWORD} +db-driver-user-store=org.postgresql.Driver +transaction-xa-enabled-user-store=false + db-kind-user-store-qa=postgres +db-url-full-user-store-qa=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse +db-username-user-store-qa=${DATAVERSE_DB_USER} +db-password-user-store-qa=${DATAVERSE_DB_PASSWORD} +db-driver-user-store-qa=org.postgresql.Driver +transaction-xa-enabled-user-store-qa=false diff --git a/dev-env/shib-dev-env/keycloak/quarkus.properties b/dev-env/shib-dev-env/keycloak/quarkus.properties index 302efba14..ebb14d8f4 100644 --- a/dev-env/shib-dev-env/keycloak/quarkus.properties +++ b/dev-env/shib-dev-env/keycloak/quarkus.properties @@ -1,26 +1 @@ -quarkus.datasource.user-store.db-kind=postgresql -quarkus.datasource.user-store.jdbc.url=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse -quarkus.datasource.user-store.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store.password=${DATAVERSE_DB_PASSWORD} - -quarkus.datasource.user-store.jdbc.driver=org.postgresql.Driver -quarkus.datasource.user-store.jdbc.transactions=disabled quarkus.transaction-manager.unsafe-multiple-last-resources=allow - -quarkus.datasource.user-store.jdbc.recovery.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} - -quarkus.datasource.user-store.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} -quarkus.datasource.user-store.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} -quarkus.datasource.user-store.jdbc.xa-properties.databaseName=dataverse - -quarkus.datasource.user-store-qa.jdbc.url=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse -quarkus.datasource.user-store-qa.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store-qa.password=${DATAVERSE_DB_PASSWORD} -quarkus.datasource.user-store-qa.jdbc.driver=org.postgresql.Driver -quarkus.datasource.user-store-qa.jdbc.transactions=disabled -quarkus.datasource.user-store-qa.jdbc.recovery.username=${DATAVERSE_DB_USER} -quarkus.datasource.user-store-qa.jdbc.recovery.password=${DATAVERSE_DB_PASSWORD} -quarkus.datasource.user-store-qa.jdbc.xa-properties.serverName=${DATAVERSE_DB_HOST} -quarkus.datasource.user-store-qa.jdbc.xa-properties.portNumber=${DATAVERSE_DB_PORT} -quarkus.datasource.user-store-qa.jdbc.xa-properties.databaseName=dataverse diff --git a/dev-env/shib-dev-env/keycloak/test-realm.json b/dev-env/shib-dev-env/keycloak/test-realm.json index 65552820e..78d5a2ca8 100644 --- a/dev-env/shib-dev-env/keycloak/test-realm.json +++ b/dev-env/shib-dev-env/keycloak/test-realm.json @@ -2636,7 +2636,7 @@ "frontendUrl": "https://localhost", "acr.loa.map": "{}" }, - "keycloakVersion": "26.6.4", + "keycloakVersion": "26.7.0", "userManagedAccessAllowed": false, "organizationsEnabled": false, "verifiableCredentialsEnabled": false, From 3654f0704619c7e80dff9e33ba5a5dcfcdc8b672 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Thu, 23 Jul 2026 14:45:07 -0400 Subject: [PATCH 10/12] fix lint.yml parsing error --- .github/workflows/lint.yml | 50 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5e2480d7f..fb42ddcdd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,37 +7,37 @@ on: jobs: lint: - runs-on: ubuntu-latest + runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 + steps: + - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 22 - cache: 'npm' + - uses: actions/setup-node@v3 + with: + node-version: 22 + cache: 'npm' - - name: Create .npmrc - run: | - cp .npmrc.example .npmrc - sed -i -e 's//${{ secrets.GITHUB_TOKEN }}/g' .npmrc - sed -i -e 's//${{ secrets.NPM_AUTH_TOKEN }}/g' .npmrc + - name: Create .npmrc + run: | + cp .npmrc.example .npmrc + sed -i -e 's//${{ secrets.GITHUB_TOKEN }}/g' .npmrc + sed -i -e 's//${{ secrets.NPM_AUTH_TOKEN }}/g' .npmrc - - name: Install Dependencies - run: npm install + - name: Install Dependencies + run: npm install - - name: Build Dataverse UI Library - working-directory: packages/design-system - run: npm run build + - name: Build Dataverse UI Library + working-directory: packages/design-system + run: npm run build - - name: Type check - run: tsc --noEmit + - name: Type check + run: tsc --noEmit - - name: ESLint - run: npm run lint:eslint + - name: ESLint + run: npm run lint:eslint - - name: Stylelint - run: npm run lint:stylelint + - name: Stylelint + run: npm run lint:stylelint - - name: Prettier - run: npm run lint:prettier + - name: Prettier + run: npm run lint:prettier From 2d611d66f0d7f40a84cfdb9abd38ea1fc3fe0cf8 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Fri, 24 Jul 2026 10:12:47 -0400 Subject: [PATCH 11/12] update deployment instructions for 26.7.0 --- docs/KEYCLOAK_DEPLOYMENT.md | 77 ++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 19 deletions(-) diff --git a/docs/KEYCLOAK_DEPLOYMENT.md b/docs/KEYCLOAK_DEPLOYMENT.md index 6e19cd4e3..98d04bb48 100644 --- a/docs/KEYCLOAK_DEPLOYMENT.md +++ b/docs/KEYCLOAK_DEPLOYMENT.md @@ -8,10 +8,10 @@ Install [Keycloak](https://www.keycloak.org/downloads.html) from the official we ### Download Required Oracle JDBC Libraries -Download the following JAR files from the URLs below, and place them in the `keycloak-26.X.X/providers` directory: +Download the following JAR files from the URLs below, and place them in the `keycloak-26.7.0/providers` directory: -- [ojdbc11-23.7.0.25.01.jar](https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc11/23.7.0.25.01/ojdbc11-23.7.0.25.01.jar) -- [orai18n-23.7.0.25.01.jar](https://repo1.maven.org/maven2/com/oracle/database/nls/orai18n/23.7.0.25.01/orai18n-23.7.0.25.01.jar) +- [ojdbc11-23.8.0.25.04.jar](https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc11/23.8.0.25.04/ojdbc11-23.8.0.25.04.jar) +- [orai18n-23.8.0.25.04.jar](https://repo1.maven.org/maven2/com/oracle/database/nls/orai18n/23.8.0.25.04/orai18n-23.8.0.25.04.jar) The `ojdbc11` JAR provides the actual JDBC driver required for database connectivity. The `orai18n` JAR provides additional character-set and localization support required by the driver in certain environments. @@ -37,26 +37,59 @@ npm run build-keycloak-theme Copy the generated `dv-spa-kc-theme.jar` file to your Keycloak instance’s `keycloak-26.X.X/providers` directory. -### Create quarkus.properties +### Create keycloak.conf + +Inside the `keycloak-26.X.X/conf` directory, create a `keycloak.conf` file with the following database configuration, replacing the bracketed variables with the corresponding values for your environment. -Inside the `keycloak-26.X.X/conf` directory, create the following file, replacing the bracketed variables with the corresponding values for the Dataverse database that the SPI will access. +The first database block configures Keycloak's own database, which stores realm, client, session, and server state. The `user-store` named datasource block configures the Dataverse database connection used by the Builtin Users SPI. ```properties -quarkus.datasource.user-store.db-kind=postgresql -quarkus.datasource.user-store.jdbc.url=jdbc:postgresql://:/ -quarkus.datasource.user-store.username= -quarkus.datasource.user-store.password= +# Keycloak server database. +db=postgres +db-url-full=jdbc:postgresql://:/ +db-username= +db-password= + +# Dataverse Builtin Users SPI datasource. +db-kind-user-store=postgres +db-url-full-user-store=jdbc:postgresql://:/ +db-username-user-store= +db-password-user-store= +db-driver-user-store=org.postgresql.Driver +transaction-xa-enabled-user-store=false +``` -quarkus.datasource.user-store.jdbc.driver=org.postgresql.Driver -quarkus.datasource.user-store.jdbc.transactions=disabled -quarkus.transaction-manager.unsafe-multiple-last-resources=allow +### Production Database Setup + +Keycloak includes an embedded H2 database driver for development purposes only. Do not use H2 for production, and do not rely on the development-mode database files for a deployed Keycloak instance. + +For production, create a dedicated relational database for Keycloak before starting the server. This database is separate from the Dataverse database used by the Builtin Users SPI. -quarkus.datasource.user-store.jdbc.recovery.username= -quarkus.datasource.user-store.jdbc.recovery.password= +For PostgreSQL, the setup is typically: -quarkus.datasource.user-store.jdbc.xa-properties.serverName= -quarkus.datasource.user-store.jdbc.xa-properties.portNumber= -quarkus.datasource.user-store.jdbc.xa-properties.databaseName= +```sql +CREATE DATABASE keycloak; +CREATE USER keycloak WITH PASSWORD ''; +GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak; +\c keycloak +GRANT ALL ON SCHEMA public TO keycloak; +``` + +Then configure the Keycloak database connection in `keycloak.conf`: + +```properties +db=postgres +db-url-full=jdbc:postgresql://:/keycloak +db-username=keycloak +db-password= +``` + +### Create quarkus.properties + +Inside the `keycloak-26.X.X/conf` directory, create a `quarkus.properties` file with the following transaction-manager setting. + +```properties +quarkus.transaction-manager.unsafe-multiple-last-resources=allow ``` ### SSL configuration @@ -81,10 +114,16 @@ Once the certificate and key have been uploaded to the instance, you need to con ### Running Keycloak +For a production deployment, build the optimized Keycloak server after the configuration files and provider JARs are in place: + +```bash +./bin/kc.sh build +``` + Run Keycloak for the first time on the instance using the following command. ```bash -nohup ./bin/kc.sh start --bootstrap-admin-username tmpadm --bootstrap-admin-password pass --hostname https:// > keycloak.log 2>&1 & +nohup ./bin/kc.sh start --optimized --bootstrap-admin-username tmpadm --bootstrap-admin-password pass --hostname https:// > keycloak.log 2>&1 & ``` This command will set up an admin user so you can log in and create a permanent one from the Keycloak Admin Console: @@ -93,7 +132,7 @@ This command will set up an admin user so you can log in and create a permanent For subsequent executions of Keycloak, you can use the following command omitting the admin user bootstrapping parameters: ```bash -nohup ./bin/kc.sh start --hostname https:// > keycloak.log 2>&1 & +nohup ./bin/kc.sh start --optimized --hostname https:// > keycloak.log 2>&1 & ``` Note that the output logs of the command are saved in a file named `keycloak.log`. From 5932797bd1135a404aef50ae6fdb77601537b8a2 Mon Sep 17 00:00:00 2001 From: Ellen Kraffmiller Date: Fri, 24 Jul 2026 10:43:40 -0400 Subject: [PATCH 12/12] remove references to user-store-qa --- ...iltin-users-authenticator-1.0-SNAPSHOT.jar | Bin 230704 -> 230657 bytes dev-env/keycloak/keycloak.conf | 7 ------- ...iltin-users-authenticator-1.0-SNAPSHOT.jar | Bin 230704 -> 230657 bytes dev-env/shib-dev-env/keycloak/keycloak.conf | 7 ------- docs/KEYCLOAK_DEPLOYMENT.md | 2 +- 5 files changed, 1 insertion(+), 15 deletions(-) diff --git a/dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar b/dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar index cc16863afd94e7e1311c6ab149b81c6d56048b5d..5a4bd0765592d73ec6c2fa23836057e257926e28 100644 GIT binary patch delta 7251 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 R)x%P&5LYNn1^(HB_5aofS0(@e delta 7334 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 diff --git a/dev-env/keycloak/keycloak.conf b/dev-env/keycloak/keycloak.conf index a0e13128e..125338107 100644 --- a/dev-env/keycloak/keycloak.conf +++ b/dev-env/keycloak/keycloak.conf @@ -4,10 +4,3 @@ db-username-user-store=${DATAVERSE_DB_USER} db-password-user-store=${DATAVERSE_DB_PASSWORD} db-driver-user-store=org.postgresql.Driver transaction-xa-enabled-user-store=false - -db-kind-user-store-qa=postgres -db-url-full-user-store-qa=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse -db-username-user-store-qa=${DATAVERSE_DB_USER} -db-password-user-store-qa=${DATAVERSE_DB_PASSWORD} -db-driver-user-store-qa=org.postgresql.Driver -transaction-xa-enabled-user-store-qa=false diff --git a/dev-env/shib-dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar b/dev-env/shib-dev-env/keycloak/keycloak-dv-builtin-users-authenticator-1.0-SNAPSHOT.jar index cc16863afd94e7e1311c6ab149b81c6d56048b5d..5a4bd0765592d73ec6c2fa23836057e257926e28 100644 GIT binary patch delta 7251 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 R)x%P&5LYNn1^(HB_5aofS0(@e delta 7334 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 diff --git a/dev-env/shib-dev-env/keycloak/keycloak.conf b/dev-env/shib-dev-env/keycloak/keycloak.conf index a0e13128e..125338107 100644 --- a/dev-env/shib-dev-env/keycloak/keycloak.conf +++ b/dev-env/shib-dev-env/keycloak/keycloak.conf @@ -4,10 +4,3 @@ db-username-user-store=${DATAVERSE_DB_USER} db-password-user-store=${DATAVERSE_DB_PASSWORD} db-driver-user-store=org.postgresql.Driver transaction-xa-enabled-user-store=false - -db-kind-user-store-qa=postgres -db-url-full-user-store-qa=jdbc:postgresql://${DATAVERSE_DB_HOST}:${DATAVERSE_DB_PORT}/dataverse -db-username-user-store-qa=${DATAVERSE_DB_USER} -db-password-user-store-qa=${DATAVERSE_DB_PASSWORD} -db-driver-user-store-qa=org.postgresql.Driver -transaction-xa-enabled-user-store-qa=false diff --git a/docs/KEYCLOAK_DEPLOYMENT.md b/docs/KEYCLOAK_DEPLOYMENT.md index 98d04bb48..449d023e3 100644 --- a/docs/KEYCLOAK_DEPLOYMENT.md +++ b/docs/KEYCLOAK_DEPLOYMENT.md @@ -8,7 +8,7 @@ Install [Keycloak](https://www.keycloak.org/downloads.html) from the official we ### Download Required Oracle JDBC Libraries -Download the following JAR files from the URLs below, and place them in the `keycloak-26.7.0/providers` directory: +Download the following JAR files from the URLs below, and place them in the `keycloak-26.X.X/providers` directory: - [ojdbc11-23.8.0.25.04.jar](https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc11/23.8.0.25.04/ojdbc11-23.8.0.25.04.jar) - [orai18n-23.8.0.25.04.jar](https://repo1.maven.org/maven2/com/oracle/database/nls/orai18n/23.8.0.25.04/orai18n-23.8.0.25.04.jar)