Skip to content

Commit

Permalink
[#1078] Make "endpoint" of AzSaslRequestSigning mandatory.
Browse files Browse the repository at this point in the history
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
  • Loading branch information
yufei-cai committed Jun 1, 2021
1 parent 2bf2330 commit 2f194ea
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
import java.time.Instant;
import java.util.Base64;

import javax.annotation.Nullable;

import org.eclipse.ditto.base.service.UriEncoding;
import org.eclipse.ditto.connectivity.model.MessageSendingFailedException;
import org.eclipse.ditto.connectivity.service.messaging.httppush.RequestSigning;
Expand All @@ -38,10 +36,10 @@ public final class AzSaslRequestSigning implements RequestSigning {
private final String sharedKeyName;
private final ByteString sharedKey;
private final Duration ttl;
@Nullable final String endpoint;
private final String endpoint;

private AzSaslRequestSigning(final String sharedKeyName, final ByteString sharedKey,
final Duration ttl, @Nullable final String endpoint) {
final Duration ttl, final String endpoint) {
this.sharedKeyName = sharedKeyName;
this.sharedKey = sharedKey;
this.ttl = ttl;
Expand All @@ -58,7 +56,7 @@ private AzSaslRequestSigning(final String sharedKeyName, final ByteString shared
* @return The signing algorithm.
*/
public static AzSaslRequestSigning of(final String sharedKeyName, final String sharedKey,
final Duration ttl, @Nullable final String endpoint) {
final Duration ttl, final String endpoint) {
try {
final ByteString sharedKeyBytes = ByteString.fromArray(Base64.getDecoder().decode(sharedKey));
return new AzSaslRequestSigning(sharedKeyName, sharedKeyBytes, ttl, endpoint);
Expand All @@ -72,8 +70,7 @@ public static AzSaslRequestSigning of(final String sharedKeyName, final String s

@Override
public Source<HttpRequest, NotUsed> sign(final HttpRequest request, final Instant timestamp) {
final String resource = endpoint != null ? endpoint : request.getUri().toString();
final String token = getSasToken(resource, timestamp);
final String token = getSasToken(endpoint, timestamp);
final HttpCredentials credentials = HttpCredentials.create(AUTH_SCHEME, token);
final HttpRequest signedRequest = request.addCredentials(credentials);
return Source.single(signedRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public RequestSigning create(final ActorSystem actorSystem, final HmacCredential
final String sharedKeyName = parameters.getValueOrThrow(JsonFields.SHARED_KEY_NAME);
final String sharedKey = parameters.getValueOrThrow(JsonFields.SHARED_KEY);
final Duration ttl = parameters.getValue(JsonFields.TTL).map(Duration::parse).orElse(DEFAULT_TTL);
final String endpoint = parameters.getValue(JsonFields.ENDPOINT).orElse(null);
final String endpoint = parameters.getValueOrThrow(JsonFields.ENDPOINT);
return AzSaslRequestSigning.of(sharedKeyName, sharedKey, ttl, endpoint);
}

Expand All @@ -54,15 +54,13 @@ public static final class JsonFields {
public static JsonFieldDefinition<String> SHARED_KEY = JsonFieldDefinition.ofString("sharedKey");

/**
* Optional: How long should tokens remain valid after creation. Default to 15 minutes.
* Obligatory: Value of the field {@code sr} to include in the signature.
*/
public static JsonFieldDefinition<String> TTL = JsonFieldDefinition.ofString("ttl");
public static JsonFieldDefinition<String> ENDPOINT = JsonFieldDefinition.ofString("endpoint");

/**
* Optional: Value of the field {@code sr} to include in the signature.
* Default to the full URI of the connection.
* Each Azure service may use a different value; IoT Hub uses the hostname for example.
* Optional: How long should tokens remain valid after creation. Default to 15 minutes.
*/
public static JsonFieldDefinition<String> ENDPOINT = JsonFieldDefinition.ofString("endpoint");
public static JsonFieldDefinition<String> TTL = JsonFieldDefinition.ofString("ttl");
}
}

0 comments on commit 2f194ea

Please sign in to comment.