Azure / azure-relay-java

Azure Relay Java SDK
MIT License
8 stars 9 forks source link

Make SharedAccessSignatureTokenProvider capable of handing updated creds #56

Open dlstucki opened 4 years ago

dlstucki commented 4 years ago

(New issue based on point 4 in issue #55.)

Consider making SharedAccessSignatureTokenProvider allow updating the credentials. Something similar to this pseudo-code:

public class SharedAccessSignatureTokenProvider extends TokenProvider {

    ... 

    public void set_sharedAccessSignature(String value) { }
    public void set_keyName(String value) { }
    public void set_sharedAccessKey(String value) { }
dlstucki commented 4 years ago

In the meantime here is a work-around: https://github.com/Azure/azure-relay-java/issues/55#issuecomment-549942046 write a class extending TokenProvider that allows changing the key-name+key_value or a signature itself. Pseudo-code

public class UpdatableSharedAccessSignatureTokenProvider extends TokenProvider {

    // When the credentials change replace this object:  
    private /*SharedAccessSignature*/TokenProvider innerSasTokenProvider;

    . . . 

    public void updateCredentials(String keyName, String keyValue) {
        this.innerSasTokenProvider = TokenProvider.createSharedAccessSignatureTokenProvider(keyName, keyValue);
    }
    public void updateCredentials(String signature) {
        this.innerSasTokenProvider = TokenProvider.createSharedAccessSignatureTokenProvider(signature);
    }

    @Override
    protected CompletableFuture<SecurityToken> onGetTokenAsync(String resource, Duration validFor) {
        return this.innerSasTokenProvider.GetTokenAsync(resource, duration);
    }