Skip to content

Commit 91c296a

Browse files
authored
Merge pull request #126 from idseefeld/develop
SAS tokens based on access policies do not even allow to check…
2 parents f2893bb + c6d93fb commit 91c296a

File tree

1 file changed

+44
-44
lines changed

1 file changed

+44
-44
lines changed

src/UmbracoFileSystemProviders.Azure/AzureFileSystem.cs

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -627,61 +627,61 @@ private static CloudBlobContainer CreateContainer(CloudBlobClient cloudBlobClien
627627
}
628628

629629
CloudBlobContainer container = cloudBlobClient.GetContainerReference(containerName.ToLowerInvariant());
630-
if (!container.Exists())
631-
{
632-
if (cloudBlobClient.Credentials.IsSAS)
633-
{
634-
// Shared access signatures (SAS) have some limitations compared to shared access keys
635-
// read more on: https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1
636-
string[] sasTokenProperties = cloudBlobClient.Credentials.SASToken.Split("&".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
637-
bool isAccountSas = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("ss=")).FirstOrDefault() != null;
638630

639-
string allowedServices = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("ss=")).FirstOrDefault();
640-
if (allowedServices != null)
641-
{
642-
allowedServices = allowedServices.Split('=')[1].ToLower();
643-
}
644-
else
645-
{
646-
allowedServices = string.Empty;
647-
}
648631

649-
string resourceTypes = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("srt=")).FirstOrDefault();
650-
if (resourceTypes != null)
651-
{
652-
resourceTypes = resourceTypes.Split('=')[1].ToLower();
653-
}
654-
else
655-
{
656-
resourceTypes = string.Empty;
657-
}
632+
if (cloudBlobClient.Credentials.IsSAS)
633+
{
634+
// Shared access signatures (SAS) have some limitations compared to shared access keys
635+
// read more on: https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1
636+
string[] sasTokenProperties = cloudBlobClient.Credentials.SASToken.Split("&".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
637+
bool isAccountSas = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("ss=")).FirstOrDefault() != null;
658638

659-
string permissions = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("sp=")).FirstOrDefault();
660-
if (permissions != null)
661-
{
662-
permissions = permissions.Split('=')[1].ToLower();
663-
}
664-
else
665-
{
666-
permissions = string.Empty;
667-
}
639+
string allowedServices = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("ss=")).FirstOrDefault();
640+
if (allowedServices != null)
641+
{
642+
allowedServices = allowedServices.Split('=')[1].ToLower();
643+
}
644+
else
645+
{
646+
allowedServices = string.Empty;
647+
}
668648

669-
bool canCreateContainer = allowedServices.Contains('b') && resourceTypes.Contains('c') && permissions.Contains('c');
670-
if (canCreateContainer)
671-
{
672-
container.CreateIfNotExists();
649+
string resourceTypes = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("srt=")).FirstOrDefault();
650+
if (resourceTypes != null)
651+
{
652+
resourceTypes = resourceTypes.Split('=')[1].ToLower();
653+
}
654+
else
655+
{
656+
resourceTypes = string.Empty;
657+
}
673658

674-
// cannot set permissions with sas access
675-
}
659+
string permissions = sasTokenProperties.Where(k => k.ToLowerInvariant().StartsWith("sp=")).FirstOrDefault();
660+
if (permissions != null)
661+
{
662+
permissions = permissions.Split('=')[1].ToLower();
676663
}
677664
else
665+
{
666+
permissions = string.Empty;
667+
}
668+
669+
bool canCreateContainer = allowedServices.Contains('b') && resourceTypes.Contains('c') && permissions.Contains('c');
670+
if (canCreateContainer)
678671
{
679672
container.CreateIfNotExists();
680-
BlobContainerPermissions newPermissions = container.GetPermissions();
681-
newPermissions.PublicAccess = accessType;
682-
container.SetPermissions(newPermissions);
673+
674+
// cannot set permissions with sas access
683675
}
684676
}
677+
else if (!container.Exists())
678+
{
679+
container.CreateIfNotExists();
680+
BlobContainerPermissions newPermissions = container.GetPermissions();
681+
newPermissions.PublicAccess = accessType;
682+
container.SetPermissions(newPermissions);
683+
}
684+
685685

686686
return container;
687687
}

0 commit comments

Comments
 (0)