Skip to content

Commit 1e34d07

Browse files
committed
Add support for restricted data stores
- Also move the reusable security bits to a new module Ref: wanaku-ai/wanaku#640
1 parent 7d46cdb commit 1e34d07

File tree

16 files changed

+192
-213
lines changed

16 files changed

+192
-213
lines changed

capabilities-bom/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
<artifactId>capabilities-services-client</artifactId>
4747
<version>${project.version}</version>
4848
</dependency>
49+
<dependency>
50+
<groupId>ai.wanaku.sdk</groupId>
51+
<artifactId>capabilities-security</artifactId>
52+
<version>${project.version}</version>
53+
</dependency>
4954
</dependencies>
5055
</dependencyManagement>
5156

capabilities-discovery/src/main/java/ai/wanaku/capabilities/sdk/discovery/config/DefaultDiscoveryServiceConfig.java renamed to capabilities-common/src/main/java/ai/wanaku/capabilities/sdk/common/config/DefaultServiceConfig.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package ai.wanaku.capabilities.sdk.discovery.config;
1+
package ai.wanaku.capabilities.sdk.common.config;
22

33
import ai.wanaku.capabilities.sdk.common.serializer.Serializer;
44

55
/**
6-
* Default implementation of {@link DiscoveryServiceConfig} providing configuration
7-
* for the Discovery Service including authentication and serialization settings.
6+
* Default implementation of {@link ServiceConfig} providing configuration
7+
* for the services including authentication and serialization settings.
88
* This class uses a builder pattern for easy instantiation.
99
*/
10-
public class DefaultDiscoveryServiceConfig implements DiscoveryServiceConfig {
10+
public class DefaultServiceConfig implements ServiceConfig {
1111

1212
private final String baseUrl;
1313
private final Serializer serializer;
@@ -20,7 +20,7 @@ public class DefaultDiscoveryServiceConfig implements DiscoveryServiceConfig {
2020
*
2121
* @param builder The builder instance containing the configuration parameters.
2222
*/
23-
private DefaultDiscoveryServiceConfig(Builder builder) {
23+
private DefaultServiceConfig(Builder builder) {
2424
this.baseUrl = builder.baseUrl;
2525
this.serializer = builder.serializer;
2626
this.clientId = builder.clientId;
@@ -63,7 +63,7 @@ public String getTokenEndpoint() {
6363
}
6464

6565
/**
66-
* Builder class for {@link DefaultDiscoveryServiceConfig}.
66+
* Builder class for {@link DefaultServiceConfig}.
6767
*/
6868
public static class Builder {
6969
private String baseUrl;
@@ -73,7 +73,7 @@ public static class Builder {
7373
private String tokenEndpoint;
7474

7575
/**
76-
* Sets the base URL for the Discovery Service.
76+
* Sets the base URL for the Service.
7777
*
7878
* @param baseUrl The base URL.
7979
* @return The builder instance.
@@ -137,12 +137,12 @@ public static Builder newBuilder() {
137137
}
138138

139139
/**
140-
* Builds a {@link DefaultDiscoveryServiceConfig} instance with the configured parameters.
140+
* Builds a {@link DefaultServiceConfig} instance with the configured parameters.
141141
*
142-
* @return A new {@link DefaultDiscoveryServiceConfig} instance.
142+
* @return A new {@link DefaultServiceConfig} instance.
143143
*/
144-
public DefaultDiscoveryServiceConfig build() {
145-
return new DefaultDiscoveryServiceConfig(this);
144+
public DefaultServiceConfig build() {
145+
return new DefaultServiceConfig(this);
146146
}
147147
}
148148
}

capabilities-services-client/src/main/java/ai/wanaku/capabilities/sdk/services/config/ServicesClientConfig.java renamed to capabilities-common/src/main/java/ai/wanaku/capabilities/sdk/common/config/ServiceConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
package ai.wanaku.capabilities.sdk.services.config;
1+
package ai.wanaku.capabilities.sdk.common.config;
22

33
import ai.wanaku.capabilities.sdk.common.serializer.Serializer;
4+
import ai.wanaku.capabilities.sdk.common.security.SecurityServiceConfig;
45

56
/**
6-
* Configuration interface for the Services Client, defining essential parameters
7+
* Configuration interface for the Discovery Service, defining essential parameters
78
* like the base URL and the serializer to be used for communication.
89
*/
9-
public interface ServicesClientConfig {
10+
public interface ServiceConfig extends SecurityServiceConfig {
1011
/**
11-
* Returns the base URL of the Wanaku Services API.
12+
* Returns the base URL of the Discovery Service API.
1213
*
1314
* @return The base URL as a {@code String}.
1415
*/
1516
String getBaseUrl();
16-
1717
/**
18-
* Returns the {@link Serializer} instance used for serializing data sent to the Services API.
18+
* Returns the {@link Serializer} instance used for serializing data sent to the Discovery Service.
1919
*
2020
* @return The {@link Serializer} instance.
2121
*/
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package ai.wanaku.capabilities.sdk.common.security;
2+
3+
/**
4+
* Common Security configuration
5+
*/
6+
public interface SecurityServiceConfig {
7+
8+
/**
9+
* Returns the client ID used for authentication with the Discovery Service.
10+
*
11+
* @return The client ID as a {@code String}.
12+
*/
13+
String getClientId();
14+
15+
/**
16+
* Returns the secret used for authentication with the Discovery Service.
17+
*
18+
* @return The secret as a {@code String}.
19+
*/
20+
String getSecret();
21+
22+
/**
23+
* Returns the URL for the OpenID Connect token endpoint (e.g., http://address/.well-known/openid-configuration).
24+
*
25+
* @return The OpenID Connect token endpoint as a {@code String}.
26+
*/
27+
String getTokenEndpoint();
28+
}

capabilities-discovery/pom.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@
2727
</dependency>
2828

2929
<dependency>
30-
<groupId>com.nimbusds</groupId>
31-
<artifactId>oauth2-oidc-sdk</artifactId>
30+
<groupId>ai.wanaku.sdk</groupId>
31+
<artifactId>capabilities-security</artifactId>
32+
<version>${project.version}</version>
3233
</dependency>
3334
</dependencies>
3435

capabilities-discovery/src/main/java/ai/wanaku/capabilities/sdk/discovery/DiscoveryServiceHttpClient.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
import ai.wanaku.api.exceptions.WanakuException;
66
import ai.wanaku.api.types.discovery.ServiceState;
77
import ai.wanaku.api.types.providers.ServiceTarget;
8-
import ai.wanaku.capabilities.sdk.discovery.config.DiscoveryServiceConfig;
8+
import ai.wanaku.capabilities.sdk.common.config.ServiceConfig;
99
import ai.wanaku.capabilities.sdk.discovery.exceptions.InvalidResponseDataException;
1010
import ai.wanaku.capabilities.sdk.common.serializer.Serializer;
11+
import ai.wanaku.capabilities.sdk.security.ServiceAuthenticator;
1112
import com.fasterxml.jackson.core.JsonProcessingException;
1213
import java.io.IOException;
1314
import java.net.URI;
@@ -30,29 +31,29 @@ public class DiscoveryServiceHttpClient {
3031

3132
private final String serviceBasePath = "/api/v1/management/discovery";
3233

33-
private final DiscoveryAuthenticator discoveryAuthenticator;
34+
private final ServiceAuthenticator serviceAuthenticator;
3435

3536
/**
3637
* Constructs a {@code DiscoveryServiceHttpClient} with the given configuration.
3738
*
38-
* @param config The {@link DiscoveryServiceConfig} containing base URL and serializer.
39+
* @param config The {@link ServiceConfig} containing base URL and serializer.
3940
*/
40-
public DiscoveryServiceHttpClient(DiscoveryServiceConfig config) {
41+
public DiscoveryServiceHttpClient(ServiceConfig config) {
4142
this.httpClient = HttpClient.newHttpClient();
4243

4344
this.baseUrl = sanitize(config);
4445
this.serializer = config.getSerializer();
4546

46-
discoveryAuthenticator = new DiscoveryAuthenticator(config);
47+
serviceAuthenticator = new ServiceAuthenticator(config);
4748
}
4849

4950
/**
5051
* Sanitizes the base URL from the configuration by removing a trailing slash if present.
5152
*
52-
* @param config The {@link DiscoveryServiceConfig} to sanitize the base URL from.
53+
* @param config The {@link ServiceConfig} to sanitize the base URL from.
5354
* @return The sanitized base URL.
5455
*/
55-
private static String sanitize(DiscoveryServiceConfig config) {
56+
private static String sanitize(ServiceConfig config) {
5657
// Ensure baseUrl doesn't have a trailing slash to prevent double slashes
5758
return config.getBaseUrl() != null && config.getBaseUrl().endsWith("/") ?
5859
config.getBaseUrl().substring(0, config.getBaseUrl().length() - 1) : config.getBaseUrl();
@@ -76,7 +77,7 @@ private HttpResponse<String> executePost(String operationPath, ServiceTarget ser
7677
.uri(uri)
7778
.header("Content-Type", MediaType.APPLICATION_JSON)
7879
.header("Accept", MediaType.WILDCARD)
79-
.header("Authorization", discoveryAuthenticator.toHeaderValue())
80+
.header("Authorization", serviceAuthenticator.toHeaderValue())
8081
.POST(HttpRequest.BodyPublishers.ofString(jsonRequestBody))
8182
.build();
8283

@@ -125,7 +126,7 @@ public HttpResponse<String> ping(String id) {
125126

126127
HttpRequest request = HttpRequest.newBuilder()
127128
.uri(uri)
128-
.header("Authorization", discoveryAuthenticator.toHeaderValue())
129+
.header("Authorization", serviceAuthenticator.toHeaderValue())
129130
.POST(HttpRequest.BodyPublishers.ofString(id))
130131
.build();
131132

@@ -152,7 +153,7 @@ public HttpResponse<String> updateState(String id, ServiceState serviceState) {
152153
.uri(uri)
153154
.header("Content-Type", MediaType.APPLICATION_JSON)
154155
.header("Accept", MediaType.WILDCARD)
155-
.header("Authorization", discoveryAuthenticator.toHeaderValue())
156+
.header("Authorization", serviceAuthenticator.toHeaderValue())
156157
.POST(HttpRequest.BodyPublishers.ofString(jsonRequestBody))
157158
.build();
158159

capabilities-discovery/src/main/java/ai/wanaku/capabilities/sdk/discovery/config/DiscoveryServiceConfig.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

capabilities-discovery/src/main/java/ai/wanaku/capabilities/sdk/discovery/exceptions/DiscoveryAuthException.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

capabilities-security/pom.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<parent>
6+
<groupId>ai.wanaku.sdk</groupId>
7+
<artifactId>capabilities-parent</artifactId>
8+
<version>0.0.9-SNAPSHOT</version>
9+
<relativePath>../capabilities-parent/pom.xml</relativePath>
10+
</parent>
11+
12+
<artifactId>capabilities-security</artifactId>
13+
14+
<name>Wanaku Capabilities SDK :: Security</name>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>ai.wanaku.sdk</groupId>
19+
<artifactId>capabilities-common</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
23+
<dependency>
24+
<groupId>com.nimbusds</groupId>
25+
<artifactId>oauth2-oidc-sdk</artifactId>
26+
</dependency>
27+
</dependencies>
28+
</project>

0 commit comments

Comments
 (0)