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>(); }
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"])); } }