2017-10-21 98 views
8

2 farklı sunucuda çalışan aynı ASP.NET 2 uygulamasına sahibim ama aynı veritabanını kullanarak kullanıcıları ve benzerlerini saklamak için kullanıyorumMakine anahtarı asp.net çekirdek 2.0?

Sorun, bir sunucuda bir kullanıcı parolası oluşturup ayarlamam, diğeri Aynı uygulamayı çalıştıran sunucu geçersiz şifre döndürür ve tersi de geçerlidir.

Ben bir asp.net 4 uygulaması ile bir kaç yıl önce bu sorunu vardı ve ben hem uygulamalar için aynı makine anahtarını ayarlayarak düzelttim.

Veri koruma API'sini duydum, ancak aynı şifreleme anahtarını kullanmasını nerede bulacağımı bulamıyorum, bunun yerine bana karmaşık gelen karmaşık örnekler buluyorum ve tek ihtiyacım olan şey, her iki sunucunun da birbirlerinin şifrelerini anlamasını sağlamaktır. .

+0

Benim varsayım Asp.Net Identity kullanıyorsunuz. Sağ? –

+0

evet doğru, asp.net kimlik – user3900456

cevap

2

birincil olarak bir sunucu tutmak ve sekonder olarak tek olabilir. İkincil sunucu devre dışı oto anahtarı nesilde

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddDataProtection().DisableAutomaticKeyGeneration(); 
} 

Yoksa

public void ConfigureServices(IServiceCollection services) 
{ 
    // sad but a giant hack :(
    // https://github.com/StackExchange/StackExchange.Redis/issues/410#issuecomment-220829614 
    var redisHost = Configuration.GetValue<string>("Redis:Host"); 
    var redisPort = Configuration.GetValue<int>("Redis:Port"); 
    var redisIpAddress = Dns.GetHostEntryAsync(redisHost).Result.AddressList.Last(); 
    var redis = ConnectionMultiplexer.Connect($"{redisIpAddress}:{redisPort}"); 

    services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys"); 
    services.AddOptions(); 

    // ... 
} 

ayrıntılı makale aynı

http://www.tugberkugurlu.com/archive/asp-net-core-authentication-in-a-load-balanced-environment-with-haproxy-and-redis

PS geçerli REDIS onları devam edebilirsiniz: Kod bağlantı aşağı giderse, cevap hala tam olduğunu bu nedenle yukarıdaki yayınlanmıştır, aynı makalelerden olduğunu

+0

bunun yerine bir SQL Server veritabanında depolamak için benzer bir yol var? Bu varsayılan dosyasistemini var Azure tarafından, yardımcı https://docs.microsoft.com/en-us/aspnet/identity/overview/extensibility/implementing-a-custom-mysql-aspnet-identity-storage-provider bakalım – user3900456

+1

ve Kayıt Defteri sürücüleri https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers –