/// <summary>
        ///  Get a signed access url using supplied permissions and expiry
        /// </summary>
        /// <param name="folderPath">Folder Path we want access to</param>
        /// <param name="signedAccessConfig">Config object with required access permissions and expiry</param>
        /// <returns></returns>
        public async Task <string> GetSignedFolderAccessUrl(string folderPath, ISignedAccessConfig signedAccessConfig)
        {
            var blobPolicyPermissions = GetAzureBlobPolicyPermissions(signedAccessConfig.AccessPermissions);

            var accessPolicy = new SharedAccessBlobPolicy
            {
                SharedAccessExpiryTime = signedAccessConfig.AccessExpiry,
                Permissions            = blobPolicyPermissions
            };
            var container          = GetContainer(folderPath);
            var subPath            = GetPathWithoutContainer(folderPath);
            var containerSignature = container.GetSharedAccessSignature(accessPolicy);

            string uri;

            if (!string.IsNullOrWhiteSpace(subPath))
            {
                var folder = container.GetDirectoryReference(folderPath.Replace($"{container.Name}/", string.Empty));
                uri = folder.Uri.ToString();
            }
            else
            {
                uri = container.Uri.ToString();
            }

            return($"{uri}{containerSignature}");
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get a signed access url using supplied permissions and expiry
        /// </summary>
        /// <param name="signedAccessConfig">Config object with required access permissions and expiry</param>
        /// <returns></returns>
        public string GetSignedAccessUrl(ISignedAccessConfig signedAccessConfig)
        {
            var queuePolicyPermissions = GetAzureAccessQueuePolicyPermissions(signedAccessConfig.AccessPermissions);
            var accessPolicy           = new SharedAccessQueuePolicy
            {
                Permissions            = queuePolicyPermissions,
                SharedAccessExpiryTime = signedAccessConfig.AccessExpiry
            };

            var queueSignature = ReceiverQueue.GetSharedAccessSignature(accessPolicy);
            var queueAccessUrl = ReceiverQueue.Uri + queueSignature;

            return(queueAccessUrl);
        }
Exemplo n.º 3
0
        public void Test_ServiceBusMessenger_GetAccessTokenUrlNotImplemented()
        {
            // Arrange/Act
            var msiConfig = new MsiConfig()
            {
                SharedAccessPolicyName = ""
            };
            var connectionConfig = new ConnectionConfig();
            var spConfig         = new ServicePrincipleConfig()
            {
                SharedAccessPolicyName = "TestPolicy", InstanceName = "testSBInstance", AppId = "TestAppId", AppSecret = "TestAppSecret", TenantId = "TestTenantId", SubscriptionId = "FakeSubscriptionId"
            };
            var serviceBus = new ServiceBusMessenger(spConfig);
            ISignedAccessConfig sharedAccessConfig = null;

            // Assert
            serviceBus.ToString().Should().NotBeNullOrEmpty();
            serviceBus.Name.Should().Be("testSBInstance");
            (serviceBus.Config as ServicePrincipleConfig).Should().NotBeNull();
            Assert.Throws <NotImplementedException>(() => serviceBus.GetSignedAccessUrl(sharedAccessConfig));
        }
        /// <summary>
        /// Get a signed access url with an absolute expiry.
        /// </summary>
        /// <param name="blobPath">Blob to give access to.</param>
        /// <param name="signedAccessConfig">Access config including required permissions and expiry</param>
        /// <returns>String access url.</returns>
        public async Task <string> GetSignedBlobAccessUrl(string blobPath, ISignedAccessConfig signedAccessConfig)
        {
            var blobPolicyPermissions = GetAzureBlobPolicyPermissions(signedAccessConfig.AccessPermissions);
            var blob = GetBlockBlobReference(blobPath);

            var policy = new SharedAccessBlobPolicy
            {
                Permissions = blobPolicyPermissions
            };

            policy.SharedAccessStartTime = DateTime.Now.AddDays(-1);

            if (signedAccessConfig.AccessExpiry != null)
            {
                policy.SharedAccessExpiryTime = signedAccessConfig.AccessExpiry;
            }
            else
            {
                policy.SharedAccessExpiryTime = DateTime.Now.AddDays(365);
            }

            return(new Uri(blob.Uri, blob.GetSharedAccessSignature(policy)).ToString());
        }
Exemplo n.º 5
0
 /// <summary>
 /// Interface method to allow retrieval of SignedAccessUrls for supported Message Providers.
 /// ServiceBus is not currently a supported Message Provider so it will error with "Not Implemented" if it is used.
 /// </summary>
 /// <param name="accessConfig"></param>
 /// <returns></returns>
 public string GetSignedAccessUrl(ISignedAccessConfig accessConfig)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 6
0
        public void Test_StorageQueue_GetSignedAccessUrl(Dictionary <string, string> expectedOutputs, ISignedAccessConfig testAccessConfig)
        {
            var testQueue = GetMessengerClient("testqueue");

            var accessUrl = testQueue.GetSignedAccessUrl(testAccessConfig);

            //Assertions
            Assert.NotNull(accessUrl);
            Assert.Contains(expectedOutputs["ExpiryDate"], accessUrl);
            Assert.Contains(expectedOutputs["Permission"], accessUrl);
            Assert.Contains(expectedOutputs["QueueName"], accessUrl);
        }
        public void Test_BlobStorage_GetSignedFolderAccessUrl(Dictionary <string, string> expectedOutputs, ISignedAccessConfig testAccessConfig, string folderPath)
        {
            // Arrange/Act
            var accessUrl = _client.GetSignedFolderAccessUrl(folderPath, testAccessConfig).GetAwaiter().GetResult();

            // Assert
            Assert.NotNull(accessUrl);
            Assert.Contains(expectedOutputs["ExpiryDate"], accessUrl);
            Assert.Contains(expectedOutputs["Permission"], accessUrl);
            Assert.Contains(expectedOutputs["FolderPath"], accessUrl);
        }