2017-10-21 61 views
8

Tôi có cùng ứng dụng asp.net core 2 chạy trên 2 máy chủ khác nhau nhưng sử dụng cùng cơ sở dữ liệu để lưu trữ người dùng và v.v.Khóa máy trong lõi asp.net 2.0?

Vấn đề là nếu tôi tạo và đặt mật khẩu người dùng trong một máy chủ, máy chủ kia máy chủ chạy cùng một ứng dụng trả lại mật khẩu không hợp lệ và ngược lại.

Tôi đã gặp sự cố này vài năm trước với ứng dụng asp.net 4 và tôi đã khắc phục sự cố bằng cách đặt cùng một khóa máy cho cả hai ứng dụng.

Tôi đã nghe về api bảo vệ dữ liệu, nhưng tôi không thể tìm được nơi để chỉ sử dụng cùng khóa mã hóa, thay vào đó tôi thấy các ví dụ phức tạp làm tôi bối rối và tất cả những gì tôi cần là làm cho cả hai máy chủ hiểu mã hóa của nhau .

+0

Giả định của tôi là bạn đang sử dụng Asp.Net Identity. Đúng? –

+0

có đúng, danh tính asp.net – user3900456

Trả lời

2

Bạn có thể giữ một máy chủ làm máy chủ chính và một máy chủ làm phụ. Trong máy chủ vô hiệu hóa hệ chính auto thứ

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

Hoặc bạn có thể tồn tại họ Redis

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(); 

    // ... 
} 

Một bài báo chi tiết được đăng tải trên cùng

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

PS: Mã được đăng ở trên là từ cùng một bài viết, để nếu liên kết bị hỏng, câu trả lời vẫn hoàn thành

+0

có cách tương tự để lưu trữ nó trong cơ sở dữ liệu máy chủ sql thay thế không? – user3900456

+1

Xem nếu https://docs.microsoft.com/en-us/aspnet/identity/overview/extensibility/implementing-a-custom-mysql-aspnet-identity-storage-provider này giúp, theo mặc định bạn có FileSystem, Azure và các trình điều khiển đăng ký https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers –

Các vấn đề liên quan