Skip to content

Commit e33fc44

Browse files
author
Rujun Chen
authored
Update key vault jca readme (Azure#19505)
1 parent fae4751 commit e33fc44

File tree

4 files changed

+48
-38
lines changed

4 files changed

+48
-38
lines changed

sdk/keyvault/azure-security-keyvault-jca/README.md

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,74 +28,78 @@ Maven dependency for the Azure Key Vault JCA client library. Add it to your proj
2828
- [Azure Subscription][azure_subscription]
2929
- An existing [Azure Key Vault][azure_keyvault]. If you need to create a Key Vault, you can use the [Azure Cloud Shell][azure_cloud_shell] to create one with this Azure CLI command. Replace `<your-resource-group-name>` and `<your-key-vault-name>` with your own, unique names:
3030

31-
```Bash
32-
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
33-
```
31+
```Bash
32+
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
33+
```
3434

3535
## Key concepts
3636

3737
## Examples
3838
### Server side SSL
3939
If you are looking to integrate the JCA provider to create an SSLServerSocket see the example below.
4040

41+
<!-- embedme ./src/samples/java/com/azure/security/keyvault/jca/ServerSSLSample.java#L18-L37 -->
4142
```java
4243
KeyVaultJcaProvider provider = new KeyVaultJcaProvider();
4344
Security.addProvider(provider);
4445

45-
KeyStore ks = KeyStore.getInstance("AzureKeyVault");
46+
KeyStore keyStore = KeyStore.getInstance("AzureKeyVault");
4647
KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter(
4748
System.getProperty("azure.keyvault.uri"),
49+
System.getProperty("azure.keyvault.aad-authentication-url"),
4850
System.getProperty("azure.keyvault.tenant-id"),
4951
System.getProperty("azure.keyvault.client-id"),
5052
System.getProperty("azure.keyvault.client-secret"));
51-
ks.load(parameter);
53+
keyStore.load(parameter);
5254

53-
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
54-
kmf.init(ks, "".toCharArray());
55+
KeyManagerFactory managerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
56+
managerFactory.init(keyStore, "".toCharArray());
5557

5658
SSLContext context = SSLContext.getInstance("TLS");
57-
context.init(kmf.getKeyManagers(), null, null);
59+
context.init(managerFactory.getKeyManagers(), null, null);
5860

59-
SSLServerSocketFactory factory = context.getServerSocketFactory();
60-
SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(8765);
61+
SSLServerSocketFactory socketFactory = context.getServerSocketFactory();
62+
SSLServerSocket serverSocket = (SSLServerSocket) socketFactory.createServerSocket(8765);
6163
```
6264

6365
Note if you want to use Azure Managed Identity, you should set the value of `azure.keyvault.uri`, and the rest of the parameters would be `null`.
6466

6567
### Client side SSL
6668
If you are looking to integrate the JCA provider for client side socket connections, see the Apache HTTP client example below.
6769

70+
<!-- embedme ./src/samples/java/com/azure/security/keyvault/jca/ClientSSLSample.java#L28-L71 -->
6871
```java
6972
KeyVaultJcaProvider provider = new KeyVaultJcaProvider();
7073
Security.addProvider(provider);
7174

72-
KeyStore ks = KeyStore.getInstance("AzureKeyVault");
75+
KeyStore keyStore = KeyStore.getInstance("AzureKeyVault");
7376
KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter(
74-
System.getProperty("azure.keyvault.uri"),
75-
System.getProperty("azure.keyvault.tenant-id"),
76-
System.getProperty("azure.keyvault.client-id"),
77-
System.getProperty("azure.keyvault.client-secret"));
78-
ks.load(parameter);
77+
System.getProperty("azure.keyvault.uri"),
78+
System.getProperty("azure.keyvault.aad-authentication-url"),
79+
System.getProperty("azure.keyvault.tenant-id"),
80+
System.getProperty("azure.keyvault.client-id"),
81+
System.getProperty("azure.keyvault.client-secret"));
82+
keyStore.load(parameter);
7983

8084
SSLContext sslContext = SSLContexts
8185
.custom()
82-
.loadTrustMaterial(ks, new TrustSelfSignedStrategy())
86+
.loadTrustMaterial(keyStore, new TrustSelfSignedStrategy())
8387
.build();
8488

85-
SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder
89+
SSLConnectionSocketFactory factory = SSLConnectionSocketFactoryBuilder
8690
.create()
8791
.setSslContext(sslContext)
8892
.setHostnameVerifier((hostname, session) -> true)
8993
.build();
9094

91-
PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder
95+
PoolingHttpClientConnectionManager manager = PoolingHttpClientConnectionManagerBuilder
9296
.create()
93-
.setSSLSocketFactory(sslSocketFactory)
97+
.setSSLSocketFactory(factory)
9498
.build();
9599

96100
String result = null;
97101

98-
try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(cm).build()) {
102+
try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(manager).build()) {
99103
HttpGet httpGet = new HttpGet("https://localhost:8766");
100104
HttpClientResponseHandler<String> responseHandler = (ClassicHttpResponse response) -> {
101105
int status = response.getCode();

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
*/
1111
public class KeyVaultLoadStoreParameter implements KeyStore.LoadStoreParameter {
1212

13+
private static final String DEFAULT_AAD_AUTHENTICATION_URL = "https://login.microsoftonline.com/";
14+
1315
/**
1416
* Stores the URI.
1517
*/
@@ -73,7 +75,7 @@ public KeyVaultLoadStoreParameter(String uri, String managedIdentity) {
7375
* @param clientSecret the client secret.
7476
*/
7577
public KeyVaultLoadStoreParameter(String uri, String tenantId, String clientId, String clientSecret) {
76-
this(uri, null, tenantId, clientId, clientSecret);
78+
this(uri, DEFAULT_AAD_AUTHENTICATION_URL, tenantId, clientId, clientSecret);
7779
}
7880

7981

sdk/keyvault/azure-security-keyvault-jca/src/samples/java/com/azure/security/keyvault/jca/ClientSSLSample.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,39 @@
2323
* The ClientSSL sample.
2424
*/
2525
public class ClientSSLSample {
26-
public void clientSSLSample() throws Exception {
26+
27+
public static void main(String[] args) throws Exception {
2728
KeyVaultJcaProvider provider = new KeyVaultJcaProvider();
2829
Security.addProvider(provider);
2930

30-
KeyStore ks = KeyStore.getInstance("AzureKeyVault");
31+
KeyStore keyStore = KeyStore.getInstance("AzureKeyVault");
3132
KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter(
3233
System.getProperty("azure.keyvault.uri"),
3334
System.getProperty("azure.keyvault.aad-authentication-url"),
3435
System.getProperty("azure.keyvault.tenant-id"),
3536
System.getProperty("azure.keyvault.client-id"),
3637
System.getProperty("azure.keyvault.client-secret"));
37-
ks.load(parameter);
38+
keyStore.load(parameter);
3839

3940
SSLContext sslContext = SSLContexts
4041
.custom()
41-
.loadTrustMaterial(ks, new TrustSelfSignedStrategy())
42+
.loadTrustMaterial(keyStore, new TrustSelfSignedStrategy())
4243
.build();
4344

44-
SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder
45+
SSLConnectionSocketFactory factory = SSLConnectionSocketFactoryBuilder
4546
.create()
4647
.setSslContext(sslContext)
4748
.setHostnameVerifier((hostname, session) -> true)
4849
.build();
4950

50-
PoolingHttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder
51+
PoolingHttpClientConnectionManager manager = PoolingHttpClientConnectionManagerBuilder
5152
.create()
52-
.setSSLSocketFactory(sslSocketFactory)
53+
.setSSLSocketFactory(factory)
5354
.build();
5455

5556
String result = null;
5657

57-
try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(cm).build()) {
58+
try (CloseableHttpClient client = HttpClients.custom().setConnectionManager(manager).build()) {
5859
HttpGet httpGet = new HttpGet("https://localhost:8766");
5960
HttpClientResponseHandler<String> responseHandler = (ClassicHttpResponse response) -> {
6061
int status = response.getCode();
@@ -69,4 +70,5 @@ public void clientSSLSample() throws Exception {
6970
ioe.printStackTrace();
7071
}
7172
}
73+
7274
}

sdk/keyvault/azure-security-keyvault-jca/src/samples/java/com/azure/security/keyvault/jca/ServerSSLSample.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,28 @@
1313
* The ServerSSL sample.
1414
*/
1515
public class ServerSSLSample {
16-
public void serverSSLSample() throws Exception {
16+
17+
public static void main(String[] args) throws Exception {
1718
KeyVaultJcaProvider provider = new KeyVaultJcaProvider();
1819
Security.addProvider(provider);
1920

20-
KeyStore ks = KeyStore.getInstance("AzureKeyVault");
21+
KeyStore keyStore = KeyStore.getInstance("AzureKeyVault");
2122
KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter(
2223
System.getProperty("azure.keyvault.uri"),
2324
System.getProperty("azure.keyvault.aad-authentication-url"),
2425
System.getProperty("azure.keyvault.tenant-id"),
2526
System.getProperty("azure.keyvault.client-id"),
2627
System.getProperty("azure.keyvault.client-secret"));
27-
ks.load(parameter);
28+
keyStore.load(parameter);
2829

29-
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
30-
kmf.init(ks, "".toCharArray());
30+
KeyManagerFactory managerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
31+
managerFactory.init(keyStore, "".toCharArray());
3132

3233
SSLContext context = SSLContext.getInstance("TLS");
33-
context.init(kmf.getKeyManagers(), null, null);
34+
context.init(managerFactory.getKeyManagers(), null, null);
3435

35-
SSLServerSocketFactory factory = context.getServerSocketFactory();
36-
SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(8765);
36+
SSLServerSocketFactory socketFactory = context.getServerSocketFactory();
37+
SSLServerSocket serverSocket = (SSLServerSocket) socketFactory.createServerSocket(8765);
3738
}
39+
3840
}

0 commit comments

Comments
 (0)