diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Core/Application/Microsoft.UnifiedPlatform.Service.Application.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Core/Application/Microsoft.UnifiedPlatform.Service.Application.csproj
index 7c0d3e5..17f47d6 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Core/Application/Microsoft.UnifiedPlatform.Service.Application.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Core/Application/Microsoft.UnifiedPlatform.Service.Application.csproj
@@ -5,7 +5,9 @@
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/AadAuthenticator.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/AadAuthenticator.cs
index 26a7414..70eab4a 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/AadAuthenticator.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/AadAuthenticator.cs
@@ -19,11 +19,13 @@ public class AadAuthenticator : IAuthenticator
private readonly string _clientId;
private readonly ConcurrentDictionary confidentialApps = new ConcurrentDictionary();
private readonly string _certificateThumprint;
- public AadAuthenticator(string authority, string clientId, string certificateThumbprint)
+ private readonly string _userAssignedClientId;
+ public AadAuthenticator(string authority, string clientId, string certificateThumbprint,string userAssignedClientId)
{
_authority = authority;
_clientId = clientId;
_certificateThumprint = certificateThumbprint;
+ _userAssignedClientId= userAssignedClientId;
}
public async Task GenerateToken(string resourceId, Dictionary additionalClaims)
@@ -51,11 +53,12 @@ private IConfidentialClientApplication GetOrCreateConfidentialApp(string authori
confidentialApps.TryAdd(confidentialAppCacheKey, confidentialClientApplication);
return confidentialClientApplication;
#else
-
+ var managedIdentityId = ManagedIdentityId.FromUserAssignedClientId(_userAssignedClientId);
+ var credential = new ManagedIdentityCredential(managedIdentityId);
IConfidentialClientApplication clientApplicationWithMI = ConfidentialClientApplicationBuilder.Create(clientId).WithAuthority(new Uri(authority))
.WithClientAssertion((AssertionRequestOptions options) =>
{
- var accessToken = new DefaultAzureCredential().GetToken(new TokenRequestContext(new string[] { $"api://AzureADTokenExchange/.default" }), CancellationToken.None);
+ var accessToken = credential.GetToken(new TokenRequestContext(new string[] { $"api://AzureADTokenExchange/.default" }), CancellationToken.None);
return Task.FromResult(accessToken.Token);
}).Build();
confidentialApps.TryAdd(confidentialAppCacheKey, clientApplicationWithMI);
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/Microsoft.UnifiedPlatform.Service.Authentication.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/Microsoft.UnifiedPlatform.Service.Authentication.csproj
index 181775e..b680396 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/Microsoft.UnifiedPlatform.Service.Authentication.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Authentication/Microsoft.UnifiedPlatform.Service.Authentication.csproj
@@ -6,8 +6,8 @@
-
-
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Configuration/Microsoft.UnifiedPlatform.Service.Configuration.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Configuration/Microsoft.UnifiedPlatform.Service.Configuration.csproj
index 3c2467a..e8a56aa 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Configuration/Microsoft.UnifiedPlatform.Service.Configuration.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Configuration/Microsoft.UnifiedPlatform.Service.Configuration.csproj
@@ -5,7 +5,9 @@
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Redis/Microsoft.UnifiedPlatform.Service.Redis.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Redis/Microsoft.UnifiedPlatform.Service.Redis.csproj
index 109b2b4..34caaf7 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Redis/Microsoft.UnifiedPlatform.Service.Redis.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Redis/Microsoft.UnifiedPlatform.Service.Redis.csproj
@@ -6,6 +6,8 @@
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/KeyVaultProvider.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/KeyVaultProvider.cs
index d6777f5..998d721 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/KeyVaultProvider.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/KeyVaultProvider.cs
@@ -1,4 +1,5 @@
using Azure;
+using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Microsoft.UnifiedPlatform.Service.Common.AppExceptions;
@@ -8,11 +9,12 @@
using System;
using System.Net;
using System.Threading.Tasks;
+using ManagedIdentityId = Azure.Identity.ManagedIdentityId;
///
/// Provides application secrets from Azure Key Vault
///
-public class KeyVaultProvider: ISecretsProvider
+public class KeyVaultProvider : ISecretsProvider
{
public const string KEY_VAULT_URI_FORMAT = "https://{0}.vault.azure.net";
@@ -24,11 +26,19 @@ public class KeyVaultProvider: ISecretsProvider
///
/// Configuration for connecting to Azure Key Vault
/// Service for caching data
- public KeyVaultProvider(string keyVaultName, ICacheService cacheService)
+ public KeyVaultProvider(string keyVaultName, string userAssignedClientId, ICacheService cacheService)
{
var keyVaultUri = string.Format(KEY_VAULT_URI_FORMAT, keyVaultName);
_cacheService = cacheService;
- var credential = new DefaultAzureCredential();
+
+ TokenCredential credential;
+ #if DEBUG
+ credential = new VisualStudioCredential();
+ #else
+ var managedIdentityId = ManagedIdentityId.FromUserAssignedClientId(userAssignedClientId);
+ credential = new ManagedIdentityCredential(managedIdentityId);
+ #endif
+
var secretClient = new SecretClient(new Uri(keyVaultUri), credential);
_keyVaultClientWrapper = new KeyVaultClientWrapper(keyVaultUri, secretClient);
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/Microsoft.UnifiedPlatform.Service.Secrets.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/Microsoft.UnifiedPlatform.Service.Secrets.csproj
index 7d81dc7..c576ba0 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/Microsoft.UnifiedPlatform.Service.Secrets.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Secrets/Microsoft.UnifiedPlatform.Service.Secrets.csproj
@@ -5,9 +5,10 @@
-
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Storage/Microsoft.UnifiedPlatform.Storage.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Storage/Microsoft.UnifiedPlatform.Storage.csproj
index b256916..2718797 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Storage/Microsoft.UnifiedPlatform.Storage.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Infrastructure/Storage/Microsoft.UnifiedPlatform.Storage.csproj
@@ -6,8 +6,10 @@
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/AzureRegionUtility.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/AzureRegionUtility.cs
index fbc21ea..127a5a0 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/AzureRegionUtility.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/AzureRegionUtility.cs
@@ -3,7 +3,6 @@
using GeoCoordinatePortable;
using Microsoft.AzureRegion.Models;
using Microsoft.Identity.Client;
-using Microsoft.Identity.Web;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
@@ -31,6 +30,7 @@ public class AzureRegionUtility : IAzureRegionUtility
private static DateTime _cachedUntil = DateTime.UtcNow;
private readonly ConcurrentDictionary confidentialApps = new ConcurrentDictionary();
private readonly string CertificateThumbprint;
+ private readonly string UserAssignedClientId;
public AzureRegionUtility(string certificateThumbprint)
: this(azureSubscriptionId: "05a315f7-744f-4692-b9dd-1aed7c6cee64",
@@ -39,16 +39,17 @@ public AzureRegionUtility(string certificateThumbprint)
aadAuthority: "https://login.microsoftonline.com/microsoft.onmicrosoft.com",
aadClientId: "1601a33e-356e-4570-8325-eefe6116eadb",
cacheDurationInMins: 43200,
- certificateThumbprint: certificateThumbprint
+ certificateThumbprint: certificateThumbprint,
+ userAssignedClientId: "ddcbb4aa-01a9-46aa-8c11-03e1b789d9cd"
)
{ }
- public AzureRegionUtility(string azureSubscriptionId, string azureManagementEndpoint, string azureAadResourceId, string aadAuthority, string aadClientId, int cacheDurationInMins, string certificateThumbprint)
- : this(azureSubscriptionId, azureManagementEndpoint, azureAadResourceId, aadAuthority, aadClientId, cacheDurationInMins, certificateThumbprint, new HttpClientFactory())
+ public AzureRegionUtility(string azureSubscriptionId, string azureManagementEndpoint, string azureAadResourceId, string aadAuthority, string aadClientId, int cacheDurationInMins, string certificateThumbprint, string userAssignedClientId)
+ : this(azureSubscriptionId, azureManagementEndpoint, azureAadResourceId, aadAuthority, aadClientId, cacheDurationInMins, certificateThumbprint, userAssignedClientId, new HttpClientFactory())
{
}
- internal AzureRegionUtility(string azureSubscriptionId, string azureManagementEndpoint, string azureAadResourceId, string aadAuthority, string aadClientId, int cacheDurationInMins, string certificateThumbprint, IHttpClientFactory clientFactory)
+ internal AzureRegionUtility(string azureSubscriptionId, string azureManagementEndpoint, string azureAadResourceId, string aadAuthority, string aadClientId, int cacheDurationInMins, string certificateThumbprint, string userAssignedClientId, IHttpClientFactory clientFactory)
{
AzureSubscriptionId = azureSubscriptionId;
AzureManagementEndpoint = azureManagementEndpoint;
@@ -57,6 +58,7 @@ internal AzureRegionUtility(string azureSubscriptionId, string azureManagementEn
AadClientId = aadClientId;
CacheDurationInMins = cacheDurationInMins;
CertificateThumbprint = certificateThumbprint;
+ UserAssignedClientId = userAssignedClientId;
_httpClientFactory = clientFactory;
}
@@ -138,7 +140,7 @@ private async Task GenerateAuthToken()
{
try
{
- IConfidentialClientApplication app = GetOrCreateConfidentialApp(AadAuthority, AadClientId);
+ IConfidentialClientApplication app = GetOrCreateConfidentialApp(AadAuthority, AadClientId, UserAssignedClientId);
var authResult = await app.AcquireTokenForClient(new[] { $"{AzureManagementAadResourceId}/.default" }).ExecuteAsync();
return authResult.AccessToken;
@@ -149,7 +151,7 @@ private async Task GenerateAuthToken()
}
}
- private IConfidentialClientApplication GetOrCreateConfidentialApp(string authority, string clientId)
+ private IConfidentialClientApplication GetOrCreateConfidentialApp(string authority, string clientId, string userAssignedClientId)
{
try
{
@@ -169,10 +171,13 @@ private IConfidentialClientApplication GetOrCreateConfidentialApp(string authori
return confidentialClientApplication;
#else
+ var managedIdentityId = ManagedIdentityId.FromUserAssignedClientId(userAssignedClientId);
+ var credential = new ManagedIdentityCredential(managedIdentityId);
+
IConfidentialClientApplication clientApplicationWithMI = ConfidentialClientApplicationBuilder.Create(clientId).WithAuthority(new Uri(authority))
.WithClientAssertion((AssertionRequestOptions options) =>
{
- var accessToken = new DefaultAzureCredential().GetToken(new TokenRequestContext(new string[] { $"api://AzureADTokenExchange/.default" }), CancellationToken.None);
+ var accessToken = credential.GetToken(new TokenRequestContext(new string[] { $"api://AzureADTokenExchange/.default" }), CancellationToken.None);
return Task.FromResult(accessToken.Token);
}).Build();
confidentialApps.TryAdd(confidentialAppCacheKey, clientApplicationWithMI);
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/Microsoft.AzureRegion.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/Microsoft.AzureRegion.csproj
index 0dc9d54..3cba8e5 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/Microsoft.AzureRegion.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Library/AzureRegion/Microsoft.AzureRegion.csproj
@@ -5,10 +5,13 @@
+
-
+
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/DefaultAzureCredentialProvider.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/DefaultAzureCredentialProvider.cs
index 47a7f77..9686a6a 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/DefaultAzureCredentialProvider.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/DefaultAzureCredentialProvider.cs
@@ -1,4 +1,5 @@
-using Azure.Identity;
+using Azure.Core;
+using Azure.Identity;
using System.Diagnostics.CodeAnalysis;
namespace Microsoft.UnifiedPlatform.Service.Common.Helpers
@@ -6,9 +7,9 @@ namespace Microsoft.UnifiedPlatform.Service.Common.Helpers
[ExcludeFromCodeCoverage]
public class DefaultAzureCredentialProvider : IDefaultAzureCredentialProvider
{
- public DefaultAzureCredential GetDefaultAzureCredential()
+ public TokenCredential GetDefaultAzureCredential(string userManagedIdentity)
{
- return new DefaultAzureCredential();
+ return new VisualStudioCredential();
}
}
}
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/IDefaultAzureCredentialProvider.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/IDefaultAzureCredentialProvider.cs
index 9df80b2..6d68cda 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/IDefaultAzureCredentialProvider.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/IDefaultAzureCredentialProvider.cs
@@ -1,9 +1,10 @@
-using Azure.Identity;
+using Azure.Core;
+using Azure.Identity;
namespace Microsoft.UnifiedPlatform.Service.Common.Helpers
{
public interface IDefaultAzureCredentialProvider
{
- DefaultAzureCredential GetDefaultAzureCredential();
+ TokenCredential GetDefaultAzureCredential(string userAssignedClientId="");
}
}
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/UserAssignedIdentityCredentialProvider.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/UserAssignedIdentityCredentialProvider.cs
new file mode 100644
index 0000000..cfccaf4
--- /dev/null
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Helpers/UserAssignedIdentityCredentialProvider.cs
@@ -0,0 +1,16 @@
+using Azure.Core;
+using Azure.Identity;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Microsoft.UnifiedPlatform.Service.Common.Helpers
+{
+ [ExcludeFromCodeCoverage]
+ public class UserAssignedIdentityCredentialProvider : IDefaultAzureCredentialProvider
+ {
+ public TokenCredential GetDefaultAzureCredential(string userAssignedClientId)
+ {
+ return new ManagedIdentityCredential(
+ ManagedIdentityId.FromUserAssignedClientId(userAssignedClientId));
+ }
+ }
+}
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Microsoft.UnifiedPlatform.Service.Common.csproj b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Microsoft.UnifiedPlatform.Service.Common.csproj
index f0b68bb..0da8f0d 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Microsoft.UnifiedPlatform.Service.Common.csproj
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/SharedKernel/Common/Microsoft.UnifiedPlatform.Service.Common.csproj
@@ -7,8 +7,9 @@
-
+
+
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/Startup.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/Startup.cs
index 2192f9c..764fc5b 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/Startup.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/Startup.cs
@@ -45,7 +45,8 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
{
var secretProvider = new KeyVaultProvider(
Configuration["KeyVault:Name"],
- new InMemoryCache(new MemoryCache(new MemoryCacheOptions())));
+ Configuration["Authentication:UserAssignedClientId"],
+ new InMemoryCache(new MemoryCache(new MemoryCacheOptions())));
var signingKey = secretProvider.GetSecret("Authentication-RedisCluster-Secret").Result;
options.TokenValidationParameters = new TokenValidationParameters()
@@ -63,7 +64,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
{
options.Audience = Configuration["Authentication:AAD:Audience"];
options.Authority = Configuration["Authentication:AAD:Authority"];
-
+
});
services.AddAuthorization(options =>
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/appsettings.json b/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/appsettings.json
index 03a9279..8d5deae 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/appsettings.json
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/API/appsettings.json
@@ -81,7 +81,8 @@
},
"LocalDebugging": {
"CertificateThumbprint": "27d6d3122675fcc4fe11e4977a540fc74169e1f1"
- }
+ },
+ "UserAssignedClientId": "ddcbb4aa-01a9-46aa-8c11-03e1b789d9cd"
},
"Storage": {
"Name": "fxpstorageprodeus",
diff --git a/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/Dependencies/CommonDependencyModule.cs b/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/Dependencies/CommonDependencyModule.cs
index e9fe649..38214c9 100644
--- a/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/Dependencies/CommonDependencyModule.cs
+++ b/src/service/Microsoft.UnifiedRedisPlatform.Service/Web/Dependencies/CommonDependencyModule.cs
@@ -26,6 +26,9 @@
using Microsoft.UnifiedPlatform.Service.Application.Commands.Handlers;
using Microsoft.UnifiedPlatform.Service.Common.Configuration.Resolvers;
using Microsoft.UnifiedPlatform.Service.Common.Helpers;
+using Microsoft.Extensions.Hosting;
+using Azure.Identity;
+using Microsoft.Identity.Client.Platforms.Features.DesktopOs.Kerberos;
namespace Microsoft.UnifiedRedisPlatform.Service.Dependencies.DependencyResolution
{
@@ -57,7 +60,7 @@ protected override void Load(ContainerBuilder builder)
RegisterConfigurationProviders(builder);
RegisterConfigurations(builder);
RegisterAzureRegionUtility(builder);
- RegisterRedisProviders(builder);
+ RegisterRedisProviders(builder);
RegisterRequestHandlerResolver(builder);
RegisterQueries(builder);
RegisterCommands(builder);
@@ -88,7 +91,7 @@ protected virtual void RegisterMemoryCache(ContainerBuilder builder)
}
protected virtual void RegisterApplicationInsights(ContainerBuilder builder)
- {
+ {
}
protected virtual void RegisterKeyVault(ContainerBuilder builder)
@@ -98,6 +101,9 @@ protected virtual void RegisterKeyVault(ContainerBuilder builder)
.WithParameter(new ResolvedParameter(
(pi, ctx) => pi.ParameterType == typeof(string) && pi.Name == "keyVaultName",
(pi, ctx) => ctx.ResolveKeyed(AppSettingsConfigurationProviderKey).GetConfiguration("KeyVault", "Name").Result))
+ .WithParameter(new ResolvedParameter(
+ (pi, ctx) => pi.Name == "userAssignedClientId",
+ (pi, ctx) => ctx.ResolveKeyed(AppSettingsConfigurationProviderKey).GetConfiguration("Authentication", "UserAssignedClientId").Result))
.SingleInstance();
builder.RegisterType()
@@ -119,7 +125,10 @@ protected virtual void RegisterAuthenticators(ContainerBuilder builder)
.WithParameter(new ResolvedParameter(
(pi, ctx) => pi.Name == "certificateThumbprint",
(pi, ctx) => ctx.ResolveKeyed(AppSettingsConfigurationProviderKey).GetConfiguration("Authentication", "LocalDebugging:CertificateThumbprint").Result))
- .SingleInstance();
+ .WithParameter(new ResolvedParameter(
+ (pi, ctx) => pi.Name == "userAssignedClientId",
+ (pi, ctx) => ctx.ResolveKeyed(AppSettingsConfigurationProviderKey).GetConfiguration("Authentication", "UserAssignedClientId").Result))
+ .SingleInstance();
builder.RegisterType()
.Keyed(RedisClusterAuthenticatorKey)
@@ -147,12 +156,16 @@ protected virtual void RegisterStorageConfigurationProvider(ContainerBuilder bui
(pi, ctx) => pi.Name.ToLowerInvariant() == "secretConfigurationProvider".ToLowerInvariant(),
(pi, ctx) => ctx.ResolveKeyed(SecretsConfigurationProviderKey)));
+ builder.RegisterType()
+ .As()
+ .SingleInstance();
+
builder.Register(ctx =>
{
var storageConfigResolver = ctx.Resolve>();
return storageConfigResolver.Resolve();
}).As()
- .SingleInstance();
+ .SingleInstance();
builder.RegisterType()
.As()
@@ -170,7 +183,7 @@ protected virtual void RegisterStorageConfigurationProvider(ContainerBuilder bui
.Keyed(StorageConfigurationProviderKey)
.As()
.SingleInstance();
- }
+ }
protected virtual void RegisterConfigurationProviders(ContainerBuilder builder)
{
@@ -190,7 +203,7 @@ protected virtual void RegisterConfigurationProviders(ContainerBuilder builder)
#endregion App Metadata Configuration
builder.RegisterType()
- .As();
+ .As();
builder.RegisterType()
.As()
@@ -214,7 +227,7 @@ protected virtual void RegisterConfigurationProviders(ContainerBuilder builder)
}
protected virtual void RegisterConfigurations(ContainerBuilder builder)
- {
+ {
}
protected virtual void RegisterAzureRegionUtility(ContainerBuilder builder)
@@ -287,9 +300,15 @@ protected virtual void RegisterCommands(ContainerBuilder builder)
protected virtual void RegisterHelpers(ContainerBuilder builder)
{
+ #if DEBUG
builder.RegisterType()
- .As()
- .SingleInstance();
+ .As()
+ .SingleInstance();
+ #else
+ builder.RegisterType()
+ .As()
+ .SingleInstance();
+ #endif
}
}
}