@@ -68,30 +68,49 @@ jobs:
6868 jar cf smoke.jar canary.txt
6969 ls -la smoke.jar
7070
71+ - name : Write OIDC token for JCA workload identity
72+ run : |
73+ # azure-security-keyvault-jca reads workload identity credentials from
74+ # env vars: AZURE_FEDERATED_TOKEN_FILE + AZURE_CLIENT_ID + AZURE_TENANT_ID.
75+ # azure/login doesn't write the token file, so we do it here.
76+ TOKEN=$(curl -sS -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
77+ "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=api://AzureADTokenExchange" \
78+ | jq -r '.value')
79+ [ -n "$TOKEN" ] || { echo "Failed to obtain OIDC token"; exit 1; }
80+ echo "$TOKEN" > /tmp/azure-oidc-token.txt
81+ chmod 600 /tmp/azure-oidc-token.txt
82+ echo "AZURE_FEDERATED_TOKEN_FILE=/tmp/azure-oidc-token.txt" >> "$GITHUB_ENV"
83+
7184 - name : Sign smoke JAR with Azure Key Vault JCA
7285 env :
7386 AZURE_KEYVAULT_URI : ${{ vars.AZURE_KEYVAULT_URI }}
7487 AZURE_KEYVAULT_CERT_NAME : ${{ vars.AZURE_KEYVAULT_CERT_NAME }}
88+ AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
89+ AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
7590 run : |
76- # Mirrors ci-release.yml:223-247 (Sign installer JAR step)
91+ # -J-cp requires two separate -J tokens: one for the flag, one for the value.
92+ # --module-path does NOT work for non-modular JARs (JCA SPI not registered).
93+ # Auth via workload identity: AZURE_FEDERATED_TOKEN_FILE + AZURE_CLIENT_ID + AZURE_TENANT_ID.
7794 KV_JCA_JAR="$HOME/.m2/repository/com/azure/azure-security-keyvault-jca/2.10.0/azure-security-keyvault-jca-2.10.0.jar"
7895 if [ ! -f "$KV_JCA_JAR" ]; then
7996 mvn -q dependency:get \
8097 -Dartifact=com.azure:azure-security-keyvault-jca:2.10.0:jar
8198 fi
8299 ls -la "$KV_JCA_JAR"
83100 jarsigner \
84- -J--module-path= "${KV_JCA_JAR}" \
85- -J--add-modules="com.azure.security. keyvault.jca " \
101+ -J-cp -J "${KV_JCA_JAR}" \
102+ -J-Dazure. keyvault.uri="${AZURE_KEYVAULT_URI} " \
86103 -keystore NONE \
87104 -storetype AzureKeyVault \
88105 -storepass "" \
89- -providerName AzureKeyVault \
90106 -providerClass com.azure.security.keyvault.jca.KeyVaultJcaProvider \
91- -J-Dazure.keyvault.uri="${AZURE_KEYVAULT_URI}" \
92107 -tsa http://timestamp.sectigo.com/ \
93108 /tmp/smoke/smoke.jar "$AZURE_KEYVAULT_CERT_NAME"
94109
110+ - name : Remove OIDC token file
111+ if : always()
112+ run : rm -f /tmp/azure-oidc-token.txt
113+
95114 - name : Verify smoke JAR signature
96115 run : |
97116 jarsigner -verify -strict -verbose /tmp/smoke/smoke.jar | tail -20
0 commit comments