Ejemplo n.º 1
0
        public static void AddQueueDependencies(this IServiceCollection services, ServiceAuthType serviceAuthType, IConfiguration configuration = null)
        {
            var queueReferences = new Dictionary <QueueType, string>
            {
                { QueueType.foo, "foo" },
                { QueueType.bar, "bar" }
            };

            services.AddTransient(sp => GetQueueCredential(serviceAuthType, configuration));
            services.AddTransient <ICloudQueue, QueueClientWrapper>();
            services.AddTransient <IQueueFactory, QueueFactory>(sp => new QueueFactory(queueReferences, sp.GetRequiredService <ICloudQueue>(), "<INSERT BASE QUEUE URL FROM CONFIG OR CONST>"));
            services.AddTransient <IQueueService, QueueService>();
        }
Ejemplo n.º 2
0
        private static TokenCredential GetQueueCredential(ServiceAuthType serviceAuthType, IConfiguration configuration = null)
        {
            switch (serviceAuthType)
            {
            case ServiceAuthType.MSI:
                return(new DefaultAzureCredential());

            case ServiceAuthType.Cert:
                var certificateStore      = new X509Store(StoreLocation.CurrentUser);
                var certificateThumbprint = configuration["CertificateThumbprint"];
                certificateStore.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
                var certificateCollection = certificateStore.Certificates.Find(X509FindType.FindByThumbprint,
                                                                               certificateThumbprint,
                                                                               false);
                var certificate = certificateCollection.OfType <X509Certificate2>().FirstOrDefault()
                                  ?? throw new ArgumentNullException($"Certificate with thumbprint, {certificateThumbprint}, could not be found.");
                return(new ClientCertificateCredential(configuration["tenantId"], configuration["clientId"], certificate));

            default:
                return(new ClientSecretCredential(configuration["tenantId"], configuration["clientId"], configuration["clientSecret"]));
            }
        }