コード例 #1
0
        public void HybridConnectionWithAuthorization()
        {
            string relayName = "HybridConnectionWithAuthorization";
            var    ns        = NamespaceManager.CreateFromConnectionString(TestServiceBus.relayConnectionString);

            try
            {
                //https://www.codit.eu/blog/2014/12/securing-azure-service-bus-relay-endpoints-with-sharedaccesssignatures/
                var relayDescription = new HybridConnectionDescription(relayName)
                {
                    RequiresClientAuthorization = true
                };

                var sendKey       = SharedAccessAuthorizationRule.GenerateRandomKey();
                var sendKeyName   = "SendAccessKey";
                var listenKey     = SharedAccessAuthorizationRule.GenerateRandomKey();
                var listenKeyName = "ListenAccessKey";

                relayDescription.Authorization.Add(new SharedAccessAuthorizationRule(listenKeyName, listenKey,
                                                                                     new List <AccessRights> {
                    AccessRights.Listen
                }));
                relayDescription.Authorization.Add(new SharedAccessAuthorizationRule(sendKeyName, sendKey,
                                                                                     new List <AccessRights> {
                    AccessRights.Send
                }));

                ns.CreateHybridConnection(relayDescription);
                Assert.IsTrue(ns.HybridConnectionExists(relayName));
            }
            finally
            {
                ns.DeleteHybridConnection(relayName);
            }
        }
コード例 #2
0
        static void ConfigureCreateCommand(CommandLineApplication hcCommand)
        {
            hcCommand.RelayCommand("create", (createCmd) =>
            {
                createCmd.Description = "Create a HybridConnection";

                var pathArgument             = createCmd.Argument("path", "HybridConnection path");
                var connectionStringArgument = createCmd.Argument("connectionString", "Relay ConnectionString");

                var requireClientAuthOption = createCmd.Option(
                    CommandStrings.RequiresClientAuthTemplate, CommandStrings.RequiresClientAuthDescription, CommandOptionType.SingleValue);

                createCmd.OnExecute(async() =>
                {
                    string connectionString = ConnectionStringUtility.ResolveConnectionString(connectionStringArgument);
                    if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(pathArgument.Value))
                    {
                        TraceMissingArgument(string.IsNullOrEmpty(connectionString) ? connectionStringArgument.Name : pathArgument.Name);
                        createCmd.ShowHelp();
                        return(1);
                    }

                    var connectionStringBuilder = new RelayConnectionStringBuilder(connectionString);
                    RelayTraceSource.TraceInfo($"Creating HybridConnection '{pathArgument.Value}' in {connectionStringBuilder.Endpoint.Host}...");
                    var hcDescription = new HybridConnectionDescription(pathArgument.Value);
                    hcDescription.RequiresClientAuthorization = GetBoolOption(requireClientAuthOption, true);
                    var namespaceManager = new RelayNamespaceManager(connectionString);
                    await namespaceManager.CreateHybridConnectionAsync(hcDescription);
                    RelayTraceSource.TraceInfo($"Creating HybridConnection '{pathArgument.Value}' in {connectionStringBuilder.Endpoint.Host} succeeded");
                    return(0);
                });
            });
        }
コード例 #3
0
        public void GetHybridConnection()
        {
            string relayName = "GetHybridConnection";
            var    ns        = NamespaceManager.CreateFromConnectionString(TestServiceBus.relayConnectionString);

            try
            {
                ns.CreateHybridConnection(relayName);
                HybridConnectionDescription initialDesc = ns.GetHybridConnection(relayName);
            }
            finally
            {
                ns.DeleteHybridConnection(relayName);
            }
        }
コード例 #4
0
        public void TestHybridConnectionExits()
        {
            string relayName = "GetHybridConnection";
            var    ns        = NamespaceManager.CreateFromConnectionString(TestServiceBus.relayConnectionString);

            try { ns.DeleteHybridConnection(relayName); } catch (Exception) { }
            try
            {
                HybridConnectionDescription hd = null;
                Assert.IsFalse(ns.HybridConnectionExists(relayName, out hd));
                ns.CreateHybridConnection(relayName);
                Assert.IsTrue(ns.HybridConnectionExists(relayName));
            }
            finally
            {
                ns.DeleteHybridConnection(relayName);
            }
        }