@@ -721,26 +721,42 @@ private static void RegisterDeleteAccountService(ContainerBuilder builder, Confi
721721 private static void RegisterStatisticsServices ( ContainerBuilder builder , IGalleryConfigurationService configuration )
722722 {
723723 // when running on Windows Azure, download counts come from the downloads.v1.json blob
724- builder . Register ( c => new SimpleBlobStorageConfiguration ( configuration . Current . AzureStorage_Statistics_ConnectionString , configuration . Current . AzureStorageReadAccessGeoRedundant ) )
724+ builder . Register ( c => new SimpleBlobStorageConfiguration (
725+ configuration . Current . AzureStorage_Statistics_ConnectionString ,
726+ configuration . Current . AzureStorageReadAccessGeoRedundant ,
727+ configuration . Current . AzureStorageUseMsi ,
728+ configuration . Current . AzureStorageMsiClientId ) )
725729 . SingleInstance ( )
726730 . Keyed < IBlobStorageConfiguration > ( BindingKeys . PrimaryStatisticsKey ) ;
727731
728- builder . Register ( c => new SimpleBlobStorageConfiguration ( configuration . Current . AzureStorage_Statistics_ConnectionString_Alternate , configuration . Current . AzureStorageReadAccessGeoRedundant ) )
732+ builder . Register ( c => new SimpleBlobStorageConfiguration (
733+ configuration . Current . AzureStorage_Statistics_ConnectionString_Alternate ,
734+ configuration . Current . AzureStorageReadAccessGeoRedundant ,
735+ configuration . Current . AzureStorageUseMsi ,
736+ configuration . Current . AzureStorageMsiClientId ) )
729737 . SingleInstance ( )
730738 . Keyed < IBlobStorageConfiguration > ( BindingKeys . AlternateStatisticsKey ) ;
731739
732740 builder . Register ( c =>
733741 {
734742 var blobConfiguration = c . ResolveKeyed < IBlobStorageConfiguration > ( BindingKeys . PrimaryStatisticsKey ) ;
735- return new CloudBlobClientWrapper ( blobConfiguration . ConnectionString , blobConfiguration . ReadAccessGeoRedundant ) ;
743+ return CreateCloudBlobClientWrapper (
744+ blobConfiguration . ConnectionString ,
745+ blobConfiguration . UseMsi ,
746+ blobConfiguration . MsiClientId ,
747+ blobConfiguration . ReadAccessGeoRedundant ) ;
736748 } )
737749 . SingleInstance ( )
738750 . Keyed < ICloudBlobClient > ( BindingKeys . PrimaryStatisticsKey ) ;
739751
740752 builder . Register ( c =>
741753 {
742754 var blobConfiguration = c . ResolveKeyed < IBlobStorageConfiguration > ( BindingKeys . AlternateStatisticsKey ) ;
743- return new CloudBlobClientWrapper ( blobConfiguration . ConnectionString , blobConfiguration . ReadAccessGeoRedundant ) ;
755+ return CreateCloudBlobClientWrapper (
756+ blobConfiguration . ConnectionString ,
757+ blobConfiguration . UseMsi ,
758+ blobConfiguration . MsiClientId ,
759+ blobConfiguration . ReadAccessGeoRedundant ) ;
744760 } )
745761 . SingleInstance ( )
746762 . Keyed < ICloudBlobClient > ( BindingKeys . AlternateStatisticsKey ) ;
@@ -1432,33 +1448,11 @@ private static void ConfigureForAzureStorage(ContainerBuilder builder, IGalleryC
14321448 {
14331449 if ( completedBindingKeys . Add ( dependent . BindingKey ) )
14341450 {
1435- CloudBlobClientWrapper blobClient ;
1436- if ( ! configuration . Current . AzureStorageUseMsi )
1437- {
1438- blobClient = new CloudBlobClientWrapper ( dependent . AzureStorageConnectionString , configuration . Current . AzureStorageReadAccessGeoRedundant ) ;
1439- }
1440- else
1441- {
1442- if ( string . IsNullOrWhiteSpace ( configuration . Current . AzureStorageMsiClientId ) )
1443- {
1444- #if DEBUG
1445- blobClient = CloudBlobClientWrapper . UsingDefaultAzureCredential (
1446- dependent . AzureStorageConnectionString ,
1447- readAccessGeoRedundant : configuration . Current . AzureStorageReadAccessGeoRedundant ) ;
1448- #else
1449- blobClient = CloudBlobClientWrapper . UsingMsi (
1450- dependent . AzureStorageConnectionString ,
1451- readAccessGeoRedundant : configuration . Current . AzureStorageReadAccessGeoRedundant ) ;
1452- #endif
1453- }
1454- else
1455- {
1456- blobClient = CloudBlobClientWrapper . UsingMsi (
1457- dependent . AzureStorageConnectionString ,
1458- configuration . Current . AzureStorageMsiClientId ,
1459- configuration . Current . AzureStorageReadAccessGeoRedundant ) ;
1460- }
1461- }
1451+ CloudBlobClientWrapper blobClient = CreateCloudBlobClientWrapper (
1452+ dependent . AzureStorageConnectionString ,
1453+ configuration . Current . AzureStorageUseMsi ,
1454+ configuration . Current . AzureStorageMsiClientId ,
1455+ configuration . Current . AzureStorageReadAccessGeoRedundant ) ;
14621456 builder . RegisterInstance ( blobClient )
14631457 . AsSelf ( )
14641458 . As < ICloudBlobClient > ( )
@@ -1502,6 +1496,40 @@ private static void ConfigureForAzureStorage(ContainerBuilder builder, IGalleryC
15021496 . SingleInstance ( ) ;
15031497 }
15041498
1499+ private static CloudBlobClientWrapper CreateCloudBlobClientWrapper (
1500+ string connectionString ,
1501+ bool useMsi ,
1502+ string msiClientId ,
1503+ bool useStorageReadAccessGeoRedundant )
1504+ {
1505+ if ( ! useMsi )
1506+ {
1507+ return new CloudBlobClientWrapper ( connectionString , useStorageReadAccessGeoRedundant ) ;
1508+ }
1509+ else
1510+ {
1511+ if ( string . IsNullOrWhiteSpace ( msiClientId ) )
1512+ {
1513+ #if DEBUG
1514+ return CloudBlobClientWrapper . UsingDefaultAzureCredential (
1515+ connectionString ,
1516+ readAccessGeoRedundant : useStorageReadAccessGeoRedundant ) ;
1517+ #else
1518+ return CloudBlobClientWrapper . UsingMsi (
1519+ connectionString ,
1520+ readAccessGeoRedundant : useStorageReadAccessGeoRedundant ) ;
1521+ #endif
1522+ }
1523+ else
1524+ {
1525+ return CloudBlobClientWrapper . UsingMsi (
1526+ connectionString ,
1527+ msiClientId ,
1528+ useStorageReadAccessGeoRedundant ) ;
1529+ }
1530+ }
1531+ }
1532+
15051533 private static IAuditingService CombineAuditingServices ( IEnumerable < IAuditingService > services )
15061534 {
15071535 if ( ! services . Any ( ) )
@@ -1540,7 +1568,11 @@ private static void RegisterAuditingServices(ContainerBuilder builder, string st
15401568 builder . Register ( c =>
15411569 {
15421570 var configuration = c . Resolve < IAppConfiguration > ( ) ;
1543- return new CloudBlobClientWrapper ( configuration . AzureStorage_Auditing_ConnectionString , configuration . AzureStorageReadAccessGeoRedundant ) ;
1571+ return CreateCloudBlobClientWrapper (
1572+ configuration . AzureStorage_Auditing_ConnectionString ,
1573+ configuration . AzureStorageUseMsi ,
1574+ configuration . AzureStorageMsiClientId ,
1575+ configuration . AzureStorageReadAccessGeoRedundant ) ;
15441576 } )
15451577 . SingleInstance ( )
15461578 . Keyed < ICloudBlobClient > ( BindingKeys . AuditKey ) ;
@@ -1630,4 +1662,4 @@ private static void RegisterTyposquattingServiceHelper(ContainerBuilder builder,
16301662 . SingleInstance ( ) ;
16311663 }
16321664 }
1633- }
1665+ }
0 commit comments