예제 #1
0
        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));
        }
예제 #2
0
 public SASAccessRestriction(SASAccessLevel accessLevel, NephosUriComponents accessPath)
 {
     this.AccessLevel = accessLevel;
     this.AccessPath  = accessPath;
 }
예제 #3
0
 public BlobSignedAccessHelper(Microsoft.Cis.Services.Nephos.Common.RequestContext requestContext, NephosUriComponents uriComponents) : base(requestContext, uriComponents)
 {
     this.SignedResource = SASAccessLevel.None;
 }
예제 #4
0
 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);
     }
 }
예제 #5
0
        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());
        }