public static IDataProtectionBuilder ConfigureDataProtection(this IDataProtectionBuilder builder, DataProtectionOptions options) { builder.SetDefaultKeyLifetime(options.KeyLifeTime); builder.SetApplicationName(options.ApplicationName); var csBuilder = new System.Data.Common.DbConnectionStringBuilder { ConnectionString = options.ConnectionString }; switch (options.Type) { case DataProtectionPersistenceType.FileSystem: var dirInfo = new DirectoryInfo(csBuilder["Path"].ToString()); builder.PersistKeysToFileSystem(dirInfo); return(builder); case DataProtectionPersistenceType.Redis: { var uri = csBuilder["uri"].ToString(); var keystore = csBuilder["keystore"].ToString(); if (string.IsNullOrWhiteSpace(keystore)) { keystore = "DataProtection-Keys"; } var redis = ConnectionMultiplexer.Connect(uri); builder.PersistKeysToStackExchangeRedis(redis, keystore); return(builder); } default: throw new ArgumentOutOfRangeException($"No builder present for the specified type: [{options.Type}]"); } }
public static IDataProtectionBuilder UseAzureWebsitesProviderSettings(this IDataProtectionBuilder builder, bool skipEnvironmentValidation = false) { if (skipEnvironmentValidation || Util.IsAzureEnvironment()) { builder.DisableAutomaticKeyGeneration(); builder.SetDefaultKeyLifetime(TimeSpan.MaxValue); builder.Services.AddSingleton <IXmlRepository, AzureWebsitesXmlRepository>(); } return(builder); }