Ejemplo n.º 1
0
        /// <summary>
        /// Updates shared access signature authorization for the service bus namespace. This authorization works on
        /// public Windows Azure environments and Windows Azure Pack on prim as well.
        /// </summary>
        /// <param name="namespaceName">The service bus namespace name</param>
        /// <param name="ruleName">The SAS authorization rule name</param>
        /// <param name="primaryKey">The SAS primary key. It'll be generated if empty</param>
        /// <param name="secondaryKey">The SAS secondary key</param>
        /// <param name="permissions">Set of permissions given to the rule</param>
        /// <returns>The created Shared Access Signature authorization rule</returns>
        public virtual ExtendedAuthorizationRule UpdateSharedAccessAuthorization(
            string namespaceName,
            string ruleName,
            string primaryKey,
            string secondaryKey,
            params AccessRights[] permissions)
        {
            ExtendedAuthorizationRule oldRule = GetAuthorizationRule(namespaceName, ruleName);

            if (null == oldRule)
            {
                throw new ArgumentException(Resources.ServiceBusAuthorizationRuleNotFound);
            }

            SharedAccessAuthorizationRule rule = (SharedAccessAuthorizationRule)oldRule.Rule;

            // Update the rule
            rule.Rights       = permissions ?? rule.Rights;
            rule.PrimaryKey   = string.IsNullOrEmpty(primaryKey) ? rule.PrimaryKey : primaryKey;
            rule.SecondaryKey = string.IsNullOrEmpty(secondaryKey) ? rule.SecondaryKey : secondaryKey;

            // In case that there's nothing to update then assume user asks for primary key renewal
            if (permissions == null && string.IsNullOrEmpty(secondaryKey) && string.IsNullOrEmpty(primaryKey))
            {
                rule.PrimaryKey = SharedAccessAuthorizationRule.GenerateRandomKey();
            }

            using (HttpClient client = CreateServiceBusHttpClient())
            {
                rule = client.PutJson(UriElement.GetAuthorizationRulePath(namespaceName, ruleName), rule, Logger);
            }

            return(CreateExtendedAuthorizationRule(rule, namespaceName));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Removes shared access signature authorization for the service bus namespace.
 /// </summary>
 /// <param name="namespaceName">The service bus namespace name</param>
 /// <param name="ruleName">The SAS authorization rule name</param>
 public virtual void RemoveAuthorizationRule(string namespaceName, string ruleName)
 {
     using (HttpClient client = CreateServiceBusHttpClient())
     {
         client.Delete(UriElement.GetAuthorizationRulePath(namespaceName, ruleName), Logger);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Gets all the available connection strings for given namespace.
 /// </summary>
 /// <param name="namespaceName">The namespace name</param>
 /// <returns>List of connection strings</returns>
 public virtual List <ConnectionDetail> GetConnectionString(string namespaceName)
 {
     using (HttpClient client = CreateServiceBusHttpClient())
     {
         return(client.GetJson <List <ConnectionDetail> >(
                    UriElement.ConnectionStringUri(namespaceName),
                    Logger));
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Gets available connection strings for the specified entity.
 /// </summary>
 /// <param name="namespaceName">The namespace name</param>
 /// <param name="entityName">The entity name</param>
 /// <param name="entityType">The entity type</param>
 /// <returns>List of all available connection strings</returns>
 public virtual List <ConnectionDetail> GetConnectionString(
     string namespaceName,
     string entityName,
     ServiceBusEntityType entityType)
 {
     using (HttpClient client = CreateServiceBusHttpClient())
     {
         client.DefaultRequestHeaders.Add("x-process-at", "servicebus");
         return(client.GetJson <List <ConnectionDetail> >(
                    UriElement.ConnectionStringUri(namespaceName, entityName, entityType),
                    Logger));
     }
 }
Ejemplo n.º 5
0
        private List <T> GetAuthorizationRuleCore <T>(string namespaceName) where T : class
        {
            List <T> rules = null;

            using (HttpClient client = CreateServiceBusHttpClient())
            {
                rules = client.GetJson <List <T> >(
                    UriElement.GetNamespaceAuthorizationRulesPath(namespaceName),
                    Logger);
            }

            return(rules);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates new Windows authorization rule for Service Bus. This works on Windows Azure Pack on prim only.
        /// </summary>
        /// <param name="namespaceName">The service bus namespace name</param>
        /// <param name="ruleName">The authorization rule name</param>
        /// <param name="username">The user principle name</param>
        /// <param name="permissions">Set of permissions given to the rule</param>
        /// <returns>The created Windows authorization rule</returns>
        public virtual AllowRule CreateWindowsAuthorization(
            string namespaceName,
            string ruleName,
            string username,
            params AccessRights[] permissions)
        {
            AllowRule rule = new AllowRule(
                string.Empty,
                "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn",
                username,
                permissions);

            using (HttpClient client = CreateServiceBusHttpClient())
            {
                rule = client.PostJson(UriElement.GetNamespaceAuthorizationRulesPath(namespaceName), rule, Logger);
            }

            return(rule);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates shared access signature authorization for the service bus namespace. This authorization works on
        /// public Windows Azure environments and Windows Azure Pack on prim as well.
        /// </summary>
        /// <param name="namespaceName">The service bus namespace name</param>
        /// <param name="ruleName">The SAS authorization rule name</param>
        /// <param name="primaryKey">The SAS primary key. It'll be generated if empty</param>
        /// <param name="secondaryKey">The SAS secondary key</param>
        /// <param name="permissions">Set of permissions given to the rule</param>
        /// <returns>The created Shared Access Signature authorization rule</returns>
        public virtual ExtendedAuthorizationRule CreateSharedAccessAuthorization(
            string namespaceName,
            string ruleName,
            string primaryKey,
            string secondaryKey,
            params AccessRights[] permissions)
        {
            SharedAccessAuthorizationRule rule = new SharedAccessAuthorizationRule(
                ruleName,
                string.IsNullOrEmpty(primaryKey) ? SharedAccessAuthorizationRule.GenerateRandomKey() : primaryKey,
                secondaryKey,
                permissions);

            using (HttpClient client = CreateServiceBusHttpClient())
            {
                rule = client.PostJson(UriElement.GetNamespaceAuthorizationRulesPath(namespaceName), rule, Logger);
            }

            return(CreateExtendedAuthorizationRule(rule, namespaceName));
        }