MachineKey là gì

14:00 ngày 18-09-2017

Theo giới thiệu của microsoft thì MachineKey là một cấu hình về những thuật toán và key được sử dụng để mã hóa, giải mã và xác nhận dữ liệu FormAuthentication.

Nói cách khác, MachineKey được sữ dụng để chỉ định cách thức mã hóa dữ liệu xác thực người dùng. Mà trưc quan là FormsAuthentication.Encrypt()FormsAuthentication.Decrypt().


Thẻ MachineKey nằm trong thử system.web

<configuration>
    <system.web>
        <machineKey 
          validationKey="AutoGenerate,IsolateApps" [String]
          decryptionKey="AutoGenerate,IsolateApps" [String]
          validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
            HMACSHA384 | HMACSHA512 | alg:algorithm_name]
          decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
        />
    </system.web>
</configuration>

decryption: Chỉ định thuật toán để mã hóa và giải mã dữ liệu từ forms-authentication. Giá trị mặc định sẽ là Auto, lúc này hệ thống sẽ tự xác định thuật toán.
decryptionKey: Key được sử dụng để mã hóa và giải mã dữ liệu. AutoGenerate là giá trị mặc định, lúc này hệ thống sẽ tự sinh key.
validation: Chỉ định thuật toán được sử dụng để xác thực dữ liệu.
validationKey: Key được sử dụng để xác thực dữ liệu.

Thông tin chi tiết có thể được tham khảo tại link đây

Load Balancer và quá trình xác thực người dùng

Trước hết chúng ta cần hiểu có cái nhìn tổng quan về Load Balancer. Load Balancing (Cân Bằng Tải) là gì? Cân Bằng Tải là một tính năng công nghệ rất quan trọng trong ngành mạng máy tính, giúp các máy chủ hoạt động đồng bộ và hiệu quả hơn thông qua việc phân phối đồng đều tài nguyên.
Nó hoạt động như thế nào? Đơn giản là ở đây chúng ta có vài servers cho website và một sever có vai trò điều hướng. Server này sẽ tính toán việc và chỉnh định Server web nào sẽ thực thi request của client.
Vấn đề ở đây sẽ là Client có thể sẽ được nhiều server phục vụ. Khi User đăng nhập vào hệ thống. Server A sẽ đảm nhận quá trình xác thực này. Nó sẽ mã hóa dữ liệu đã được xác thực và gửi xuống Client như Cookies. Khi User thực hiện một request khác kèm với thông tin xác thực này, nhưng không may, Server B được chỉ định để phục vụ request này. Server B không thể giải mã dữ liệu vì nó không biết thuật toán và Key đang được sử dụng để mã hóa và xác thuật dữ liệu, dẫn đến request bị từ chối.
Để khắc phục vấn đề này, chúng ta cần sữ dụng cùng 1 thuật toán, Key để mã hóa và xác thực cho WebSite ở các server khác nhau. Và chúng ta cần chỉ định rõ điều này ở trong MachineKey. Không được phép sữ dụng các giá trị mặc định là Auto hay AutoGenerate.

 

Sử dụng IIS để tạo MachineKey

Mở IIS, Chọn Website muốn tạo MachineKey ở bên trái. Kích kép vào mục MachineKey ở bên phải.

Trong mục Machine Key, Chọn giá trị cho Validation method, Encrption method, bỏ phần chọn Automatically generate at runtime trong mục Validation keyDescrytion key. Sau đó bấm vào Generate Keys. Cuối cùng chọn Apply. Machine Key vừa tạo sẽ được thêm vào file webconfig

Kiểm tra file WebConfig chúng ta sẽ thấy dòng bên dưới được thêm vào bên trong thẻ <system.web>

<machineKey decryption="AES" decryptionKey="A52A70B3FF809E8D63772C4C3495FF721232EDE3CB663CCE" validationKey="0A809F77030D8E35DEE7C6A4C4455880126C1F98C329346DE2FFBF5EAFA03B243E21320B9FCCF27B1FDD73B0F494547E6FA0DF297B303A22DE50C8E16E85632B" validation="SHA1" />

 

 

Phản Hồi

Viết Phản Hồi

Chuyên Mục

Phản Hồi Mới