public static SASAccessLevel ParseSasAccessLevel(string signedResource) { if (string.IsNullOrEmpty(signedResource)) { throw new ArgumentException("signedResource"); } SASAccessLevel sASAccessLevel = SASAccessLevel.None; string str = signedResource; string str1 = str; if (str != null) { if (str1 == "b") { sASAccessLevel = SASAccessLevel.Blob; } else { if (str1 != "c") { throw new FormatException(string.Concat("Unknown signed resource ", signedResource)); } sASAccessLevel = SASAccessLevel.Container; } return(sASAccessLevel); } throw new FormatException(string.Concat("Unknown signed resource ", signedResource)); }
public SASAccessRestriction(SASAccessLevel accessLevel, NephosUriComponents accessPath) { this.AccessLevel = accessLevel; this.AccessPath = accessPath; }
public BlobSignedAccessHelper(Microsoft.Cis.Services.Nephos.Common.RequestContext requestContext, NephosUriComponents uriComponents) : base(requestContext, uriComponents) { this.SignedResource = SASAccessLevel.None; }
public override void ParseAccessPolicyFields(bool isDoubleSigned) { try { string item = base.QueryParams["sr"]; base.ValidateMandatoryField(item, "sr"); this.SignedResource = SASUtilities.ParseSasAccessLevel(item); if (isDoubleSigned) { string str = base.ExtractSignedAuthorization(base.RequestContext); base.ValidateMandatoryField(str, "SignedKey"); base.ValidateSignedAuthorizationFormat(str); } else { string item1 = base.QueryParams["sig"]; base.ValidateMandatoryField(item1, "sig"); base.ValidateSignatureFormat(item1); base.Signature = item1; } string str1 = base.QueryParams["si"]; base.ValidateOptionalField(str1, "si"); base.SignedIdentifier = str1; this.ValidateAndSetSASVersionToUse(base.QueryParams["sv"]); base.ParseAccessPolicyFields(isDoubleSigned); string item2 = base.QueryParams["sp"]; if (!base.IsRevocableAccess) { base.ValidateMandatoryField(item2, "sp"); } else { base.ValidateOptionalField(item2, "sp"); } if (item2 != null) { if (!VersioningHelper.IsPreApril15OrInvalidVersion(base.SignedVersion)) { SASUtilities.ValidatePermissionOrdering(item2, SASPermission.BlobWithAddAndCreate); } else { SASUtilities.ValidatePermissionOrdering(item2, SASPermission.Blob); } base.SignedPermission = new SASPermission?(SASUtilities.ParseSASPermission(item2)); } if (this.IsAtLeastFeb2012SasVersion) { string str2 = AuthenticationManagerHelper.ExtractKeyNameFromParamsWithConversion(base.QueryParams); base.ValidateOptionalField(str2, "sk"); if (str2 != null) { base.KeyName = str2.Trim(); Logger <IRestProtocolHeadLogger> .Instance.Verbose.Log("Using secret key with KeyName '{0}' to authenticate SAS request.", new object[] { base.KeyName }); } } } catch (FormatException formatException) { throw new AuthenticationFailureException("Signature fields not well formed.", formatException); } }
private static string GetCanonicalizedResource(NephosUriComponents uriComponents, SASAccessLevel signedResource, string signedVersion) { NephosAssertionException.Assert(!string.IsNullOrEmpty(uriComponents.AccountName)); NephosAssertionException.Assert(!string.IsNullOrEmpty(uriComponents.ContainerName)); StringBuilder stringBuilder = new StringBuilder(); if (signedVersion != null && VersioningHelper.CompareVersions(signedVersion, "2015-02-21") >= 0) { stringBuilder.Append("/blob"); } stringBuilder.Append("/"); stringBuilder.Append(uriComponents.AccountName); stringBuilder.Append("/"); stringBuilder.Append(uriComponents.ContainerName); if (signedResource == SASAccessLevel.Blob) { NephosAssertionException.Assert(!string.IsNullOrEmpty(uriComponents.RemainingPart)); stringBuilder.Append("/"); stringBuilder.Append(uriComponents.RemainingPart); } return(stringBuilder.ToString()); }