Skip to content

Commit 462e0f9

Browse files
Rename certificates-refresh-interval to certificates-refresh-interval--in-ms in keyvault jca (Azure#24339)
1 parent 4935311 commit 462e0f9

File tree

7 files changed

+115
-78
lines changed

7 files changed

+115
-78
lines changed

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultKeyStore.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
import java.util.Enumeration;
2626
import java.util.HashMap;
2727
import java.util.List;
28+
import java.util.Objects;
2829
import java.util.Map;
2930
import java.util.Optional;
3031
import java.util.logging.Logger;
32+
import java.util.stream.Stream;
3133

3234
import static java.util.logging.Level.FINE;
3335
import static java.util.logging.Level.WARNING;
@@ -122,10 +124,7 @@ public KeyVaultKeyStore() {
122124
String clientId = System.getProperty("azure.keyvault.client-id");
123125
String clientSecret = System.getProperty("azure.keyvault.client-secret");
124126
String managedIdentity = System.getProperty("azure.keyvault.managed-identity");
125-
long refreshInterval = Optional.of("azure.keyvault.jca.certificates-refresh-interval")
126-
.map(System::getProperty)
127-
.map(Long::valueOf)
128-
.orElse(0L);
127+
long refreshInterval = getRefreshInterval();
129128
refreshCertificatesWhenHaveUnTrustCertificate =
130129
Optional.of("azure.keyvault.jca.refresh-certificates-when-have-un-trust-certificate")
131130
.map(System::getProperty)
@@ -141,6 +140,15 @@ public KeyVaultKeyStore() {
141140
jreCertificates, wellKnowCertificates, customCertificates, keyVaultCertificates, classpathCertificates);
142141
}
143142

143+
Long getRefreshInterval() {
144+
return Stream.of("azure.keyvault.jca.certificates-refresh-interval-in-ms", "azure.keyvault.jca.certificates-refresh-interval")
145+
.map(System::getProperty)
146+
.filter(Objects::nonNull)
147+
.map(Long::valueOf)
148+
.findFirst()
149+
.orElse(0L);
150+
}
151+
144152
/**
145153
* get key vault key store by system property
146154
*

sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultCertificatesTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ private X509Certificate getTestCertificate() {
8484

8585
@Test
8686
public void testCertificatesRefreshInterval() throws Exception {
87-
System.setProperty("azure.keyvault.jca.certificates-refresh-interval", "1000");
87+
System.setProperty("azure.keyvault.jca.certificates-refresh-interval-in-ms", "1000");
8888
KeyStore keyStore = PropertyConvertorUtils.getKeyVaultKeyStore();
8989
assertNotNull(keyStore.getCertificate(certificateName));
9090
keyStore.deleteEntry(certificateName);

sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/KeyVaultKeyStoreTest.java

Lines changed: 4 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -7,57 +7,27 @@
77
import org.junit.jupiter.api.Test;
88
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
99

10-
import java.io.ByteArrayInputStream;
1110
import java.security.KeyStore;
12-
import java.security.ProviderException;
1311
import java.security.Security;
1412
import java.security.cert.Certificate;
15-
import java.security.cert.CertificateException;
16-
import java.security.cert.CertificateFactory;
17-
import java.security.cert.X509Certificate;
18-
import java.util.Base64;
1913

14+
import static org.junit.jupiter.api.Assertions.assertNotNull;
15+
import static org.junit.jupiter.api.Assertions.assertTrue;
2016
import static org.junit.jupiter.api.Assertions.assertEquals;
2117
import static org.junit.jupiter.api.Assertions.assertFalse;
22-
import static org.junit.jupiter.api.Assertions.assertNotNull;
2318
import static org.junit.jupiter.api.Assertions.assertNull;
24-
import static org.junit.jupiter.api.Assertions.assertTrue;
19+
2520

2621
/**
2722
* The JUnit tests for the KeyVaultKeyStore class.
2823
*/
2924
@EnabledIfEnvironmentVariable(named = "AZURE_KEYVAULT_CERTIFICATE_NAME", matches = "myalias")
3025
public class KeyVaultKeyStoreTest {
3126

32-
33-
/**
34-
* Stores the CER test certificate (which is valid til 2120).
35-
*/
36-
private static final String TEST_CERTIFICATE
37-
= "MIIDeDCCAmCgAwIBAgIQGghBu97rQJKNnUHPWU7xjDANBgkqhkiG9w0BAQsFADAk"
38-
+ "MSIwIAYDVQQDExlodW5kcmVkLXllYXJzLmV4YW1wbGUuY29tMCAXDTIwMDkwMjE3"
39-
+ "NDUyNFoYDzIxMjAwOTAyMTc1NTI0WjAkMSIwIAYDVQQDExlodW5kcmVkLXllYXJz"
40-
+ "LmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuU14"
41-
+ "btkN5wmcO2WKXqm1NUKXzi79EtqiFFkrLgPAwj5NNwMw2Akm3GpdEpwkJ8/q3l7d"
42-
+ "frDEVOO9gwZbz7xppyqutjxjllw8CCgjFdfK02btz56CGgh3X25ZZtzPbuMZJM0j"
43-
+ "o4mVEdaFNJ0eUeMppS0DcbbuTWCF7Jf1gvr8GVqx+E0IJUFkE+D4kdTbnJSaeK0A"
44-
+ "KEt94z88MPX18h8ud14uRVmUCYVZrZeswdE2tO1BpazrXELHuXCtrjGxsDDjDzeP"
45-
+ "98aFI9kblkqoJS4TsmloLEjwZLm80cyJDEmpXXMtR7C0FFXFI1BAtIa4mxSgBLsT"
46-
+ "L4GVPEGNANR8COYkHQIDAQABo4GjMIGgMA4GA1UdDwEB/wQEAwIFoDAJBgNVHRME"
47-
+ "AjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAkBgNVHREEHTAbghlo"
48-
+ "dW5kcmVkLXllYXJzLmV4YW1wbGUuY29tMB8GA1UdIwQYMBaAFOGTt4H3ho30O4e+"
49-
+ "hebwJjm2VMvIMB0GA1UdDgQWBBThk7eB94aN9DuHvoXm8CY5tlTLyDANBgkqhkiG"
50-
+ "9w0BAQsFAAOCAQEAGp8mCioVCmM+kZv6r+K2j2uog1k4HBwN1NfRoSsibDB8+QXF"
51-
+ "bmNf3M0imiuR/KJgODyuROwaa/AalxNFMOP8XTL2YmP7XsddBs9ONHHQXKjY/Ojl"
52-
+ "PsIPR7vZjwYPfEB+XEKl2fOIxDQQ921POBV7M6DdTC49T5X+FsLR1AIIfinVetT9"
53-
+ "QmNuvzulBX0T0rea/qpcPK4HTj7ToyImOaf8sXRv2s2ODLUrKWu5hhTNH2l6RIkQ"
54-
+ "U/aIAdQRfDaSE9jhtcVu5d5kCgBs7nz5AzeCisDPo5zIt4Mxej3iVaAJ79oEbHOE"
55-
+ "p192KLXLV/pscA4Wgb+PJ8AAEa5B6xq8p9JO+Q==";
27+
private static String certificateName;
5628

5729
private static KeyVaultKeyStore keystore;
5830

59-
private static String certificateName;
60-
6131
@BeforeAll
6232
public static void setEnvironmentProperty() {
6333
PropertyConvertorUtils.putEnvironmentPropertyToSystemPropertyForKeyVaultJca();
@@ -76,44 +46,12 @@ public void testEngineGetCertificate() {
7646
assertNotNull(keystore.engineGetCertificate(certificateName));
7747
}
7848

79-
@Test
80-
public void testEngineGetCertificateAlias() {
81-
X509Certificate certificate;
82-
83-
try {
84-
byte[] certificateBytes = Base64.getDecoder().decode(TEST_CERTIFICATE);
85-
CertificateFactory cf = CertificateFactory.getInstance("X.509");
86-
certificate = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certificateBytes));
87-
} catch (CertificateException e) {
88-
throw new ProviderException(e);
89-
}
90-
keystore.engineSetCertificateEntry("setcert", certificate);
91-
assertNotNull(keystore.engineGetCertificateAlias(certificate));
92-
}
9349

9450
@Test
9551
public void testEngineGetCertificateChain() {
9652
assertNotNull(keystore.engineGetCertificateChain(certificateName));
9753
}
9854

99-
@Test
100-
public void testEngineSetCertificateEntry() {
101-
102-
X509Certificate certificate;
103-
104-
try {
105-
byte[] certificateBytes = Base64.getDecoder().decode(TEST_CERTIFICATE);
106-
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
107-
certificate =
108-
(X509Certificate) certificateFactory.generateCertificate(new ByteArrayInputStream(certificateBytes));
109-
} catch (CertificateException e) {
110-
throw new ProviderException(e);
111-
}
112-
113-
keystore.engineSetCertificateEntry("setcert", certificate);
114-
assertNotNull(keystore.engineGetCertificate("setcert"));
115-
}
116-
11755
@Test
11856
public void testEngineGetKey() {
11957
assertNotNull(keystore.engineGetKey(certificateName, null));
@@ -152,12 +90,6 @@ public void testEngineSize() {
15290
assertTrue(keystore.engineSize() >= 0);
15391
}
15492

155-
@Test
156-
public void testEngineStore() {
157-
KeyVaultKeyStore keystore = new KeyVaultKeyStore();
158-
keystore.engineStore(null, null);
159-
}
160-
16193
@Test
16294
public void testRefreshEngineGetCertificate() throws Exception {
16395
System.setProperty("azure.keyvault.jca.refresh-certificates-when-have-un-trust-certificate", "true");
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
package com.azure.security.keyvault.jca;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
import java.io.ByteArrayInputStream;
9+
import java.security.ProviderException;
10+
import java.security.cert.CertificateException;
11+
import java.security.cert.CertificateFactory;
12+
import java.security.cert.X509Certificate;
13+
import java.util.Base64;
14+
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
import static org.junit.jupiter.api.Assertions.assertNotNull;
17+
18+
public class KeyVaultKeyStoreUnitTest {
19+
20+
/**
21+
* Stores the CER test certificate (which is valid til 2120).
22+
*/
23+
private static final String TEST_CERTIFICATE
24+
= "MIIDeDCCAmCgAwIBAgIQGghBu97rQJKNnUHPWU7xjDANBgkqhkiG9w0BAQsFADAk"
25+
+ "MSIwIAYDVQQDExlodW5kcmVkLXllYXJzLmV4YW1wbGUuY29tMCAXDTIwMDkwMjE3"
26+
+ "NDUyNFoYDzIxMjAwOTAyMTc1NTI0WjAkMSIwIAYDVQQDExlodW5kcmVkLXllYXJz"
27+
+ "LmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuU14"
28+
+ "btkN5wmcO2WKXqm1NUKXzi79EtqiFFkrLgPAwj5NNwMw2Akm3GpdEpwkJ8/q3l7d"
29+
+ "frDEVOO9gwZbz7xppyqutjxjllw8CCgjFdfK02btz56CGgh3X25ZZtzPbuMZJM0j"
30+
+ "o4mVEdaFNJ0eUeMppS0DcbbuTWCF7Jf1gvr8GVqx+E0IJUFkE+D4kdTbnJSaeK0A"
31+
+ "KEt94z88MPX18h8ud14uRVmUCYVZrZeswdE2tO1BpazrXELHuXCtrjGxsDDjDzeP"
32+
+ "98aFI9kblkqoJS4TsmloLEjwZLm80cyJDEmpXXMtR7C0FFXFI1BAtIa4mxSgBLsT"
33+
+ "L4GVPEGNANR8COYkHQIDAQABo4GjMIGgMA4GA1UdDwEB/wQEAwIFoDAJBgNVHRME"
34+
+ "AjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAkBgNVHREEHTAbghlo"
35+
+ "dW5kcmVkLXllYXJzLmV4YW1wbGUuY29tMB8GA1UdIwQYMBaAFOGTt4H3ho30O4e+"
36+
+ "hebwJjm2VMvIMB0GA1UdDgQWBBThk7eB94aN9DuHvoXm8CY5tlTLyDANBgkqhkiG"
37+
+ "9w0BAQsFAAOCAQEAGp8mCioVCmM+kZv6r+K2j2uog1k4HBwN1NfRoSsibDB8+QXF"
38+
+ "bmNf3M0imiuR/KJgODyuROwaa/AalxNFMOP8XTL2YmP7XsddBs9ONHHQXKjY/Ojl"
39+
+ "PsIPR7vZjwYPfEB+XEKl2fOIxDQQ921POBV7M6DdTC49T5X+FsLR1AIIfinVetT9"
40+
+ "QmNuvzulBX0T0rea/qpcPK4HTj7ToyImOaf8sXRv2s2ODLUrKWu5hhTNH2l6RIkQ"
41+
+ "U/aIAdQRfDaSE9jhtcVu5d5kCgBs7nz5AzeCisDPo5zIt4Mxej3iVaAJ79oEbHOE"
42+
+ "p192KLXLV/pscA4Wgb+PJ8AAEa5B6xq8p9JO+Q==";
43+
44+
@Test
45+
public void testEngineStore() {
46+
KeyVaultKeyStore keystore = new KeyVaultKeyStore();
47+
keystore.engineStore(null, null);
48+
}
49+
50+
@Test
51+
public void testGetRefreshInterval() {
52+
System.clearProperty("azure.keyvault.jca.certificates-refresh-interval");
53+
System.clearProperty("azure.keyvault.jca.certificates-refresh-interval-in-ms");
54+
KeyVaultKeyStore keystore = new KeyVaultKeyStore();
55+
assertEquals(keystore.getRefreshInterval(), 0);
56+
System.setProperty("azure.keyvault.jca.certificates-refresh-interval", "2000");
57+
keystore = new KeyVaultKeyStore();
58+
assertEquals(keystore.getRefreshInterval(), 2000);
59+
System.setProperty("azure.keyvault.jca.certificates-refresh-interval-in-ms", "1000");
60+
assertEquals(keystore.getRefreshInterval(), 1000);
61+
}
62+
63+
@Test
64+
public void testEngineGetCertificateAlias() {
65+
KeyVaultKeyStore keystore = new KeyVaultKeyStore();
66+
X509Certificate certificate;
67+
try {
68+
byte[] certificateBytes = Base64.getDecoder().decode(TEST_CERTIFICATE);
69+
CertificateFactory cf = CertificateFactory.getInstance("X.509");
70+
certificate = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certificateBytes));
71+
} catch (CertificateException e) {
72+
throw new ProviderException(e);
73+
}
74+
keystore.engineSetCertificateEntry("setcert", certificate);
75+
assertNotNull(keystore.engineGetCertificateAlias(certificate));
76+
}
77+
78+
@Test
79+
public void testEngineSetCertificateEntry() {
80+
KeyVaultKeyStore keystore = new KeyVaultKeyStore();
81+
X509Certificate certificate;
82+
try {
83+
byte[] certificateBytes = Base64.getDecoder().decode(TEST_CERTIFICATE);
84+
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
85+
certificate =
86+
(X509Certificate) certificateFactory.generateCertificate(new ByteArrayInputStream(certificateBytes));
87+
} catch (CertificateException e) {
88+
throw new ProviderException(e);
89+
}
90+
91+
keystore.engineSetCertificateEntry("setcert", certificate);
92+
assertNotNull(keystore.engineGetCertificate("setcert"));
93+
}
94+
95+
}

sdk/spring/azure-spring-boot-starter-keyvault-certificates/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Features Added
66

77
### Breaking Changes
8+
Rename `azure.keyvault.jca.certificates-refresh-interval` to `azure.keyvault.jca.certificates-refresh-interval-in-ms`.
89

910
### Bugs Fixed
1011

sdk/spring/azure-spring-boot-starter-keyvault-certificates/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ KeyVaultKeyStore can fetch certificates from KeyVault periodically if the follow
316316
azure:
317317
keyvault:
318318
jca:
319-
certificates-refresh-interval: 1800000
319+
certificates-refresh-interval-in-ms: 1800000
320320
```
321321

322322
Its value is 0(ms) by default, and certificate will not automatically refresh when its value <= 0.

sdk/spring/azure-spring-boot-starter-keyvault-certificates/src/main/java/com/azure/spring/security/keyvault/certificates/starter/KeyVaultCertificatesEnvironmentPostProcessor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringAp
3333
putEnvironmentPropertyToSystemProperty(environment, "azure.keyvault.client-secret");
3434
putEnvironmentPropertyToSystemProperty(environment, "azure.keyvault.managed-identity");
3535
putEnvironmentPropertyToSystemProperty(environment, "azure.keyvault.jca.certificates-refresh-interval");
36+
putEnvironmentPropertyToSystemProperty(environment, "azure.keyvault.jca.certificates-refresh-interval-in-ms");
3637
putEnvironmentPropertyToSystemProperty(environment, "azure.keyvault.jca.refresh-certificates-when-have-un-trust-certificate");
3738
putEnvironmentPropertyToSystemProperty(environment, "azure.cert-path.well-known");
3839
putEnvironmentPropertyToSystemProperty(environment, "azure.cert-path.custom");

0 commit comments

Comments
 (0)