GIẢI PHÁP QUẢN LÝ XÁC THỰC CHO ỨNG DỤNG DỰA TRÊN MÔ HÌNH CỦA DOTNETNUKE
26/02/2007

Trịnh Hồng Cường, Công ty Công nghệ Tin học Nhà trường.

1. Vấn đề xác thực người dùng cho ứng dụng

Quản lý bảo mật hay người đăng nhập (account management) luôn là một vấn đề cho các ứng dụng. Đây không phải là một vấn đề mới mà là một vấn đề luôn phải đặt ra ngay từ khi phần mềm là một thuật ngữ tồn tại trong ngành công nghệ thông tin, song những tiêu chí mới và những cách giải quyết mới vẫn được đưa ra để giải đáp vấn đề này.


Hình 1. Tiến trình đăng nhập ứng dụng.

Vậy thì một ứng dụng dụng được đặt ra vấn đề quản lý xác thực bảo mật là từ lúc nào? Câu trả lời là ngay từ khi thiết kế. Khi thiết kế kiến trúc tương tác cho ứng dụng, các công trình sư phần mềm đã phải cho mọi người thấy “khung sườn” của công trình, bởi vì việc xác thực và tương tác với phần mềm sẽ “bám theo” người đăng nhập tới từng chức năng cũng như đối tượng mà người đăng nhập sử dụng. Vậy vấn đề thiết kế và quy hoạch rõ ràng là quan trọng cần đầu tư chất xám, hơn là tập chung vào việc lập trình – cái mà người ta gọi là coding.

2. Ứng dụng Windows sử dụng mô hình của DotNetNuke

2.1. Mô hình quản lý đăng nhập trên web portal của DNN

Trong phần trước, tôi đã trình bày về việc sử dụng các thư viện của DNN để xây dựng ứng dụng theo mô hình “bussiness logic”. Theo dòng tư duy này, tôi sẽ đưa ra tiếp mô hình xác thực và quản lý đăng nhập dành cho các tài khoản truy nhập ứng dụng.

Xin trình bày ra ở đây mô hình quản lý tài khoản của DNN portal và các cơ chế của xác thực với portal DNN. Từ đó chúng ta phân tích và xây dựng mô hình xác thực dành cho ứng dụng của chúng ta.

Hình 2. Sơ đồ các thực thể quản lý đăng nhập trên hệ thống portal của webserver.

Thật không may mắn, khi chúng ta muốn tái sử dụng mô hình xác thực của DNN, việc xác thực dành cho một ứng dụng web lại khác so với một ứng dụng desktop. Tôi xin dẫn ra ở đây sự khác biệt trong hai mô hình này:

Trong ứng dụng web:

* Người đăng nhập sẽ tạo một phiên xác thực thông qua HTTP request.

* Control phục vụ đăng nhập sẽ đăng ký phiên làm việc này trên web server.

* Tài khoản đăng nhập vào portal sẽ được ánh xạ sang một ASP.Net user và đăng nhập vào webserver thông qua tài khoản này.

* Các thông tin về phiên đăng nhập được web server quản lý và so sánh trong từng phiên đăng nhập.

Trên ứng dụng desktop:

* Người đăng nhập được xác thực thông qua trực tiếp chương trình

* Thẻ nhận thực được chuyển cho các form và control trong chương trình

* Thông tin về tài khoản đăng nhập được lưu trực tiếp trong ứng dụng

Nhìn vào sơ đồ của hệ thống quản lý tài khoản và phân quyền cho ứng dụng ta có thể thấy được kiến trúc của việc quản lý xác thực trên web portal server. Một đặc điểm quan trọng là có một hệ thống đồng bộ giữa các tài khoản trên portal (nhóm phía dưới hình 2) và tài khoản cho việc truy nhập máy chủ web – ASP.Net authentication group (nhóm phía trên hình 2, tạm gọi tắt là AAG). Có thể có rất nhiều tài khoản được tạo ra trên portal nhưng chừng nào các tài khoản này chưa đăng nhập ứng dụng trên portal thì nó vẫn chưa được tạo ra trên AAG. Đặc điểm này cho phép việc xác thực và tương tác hệ thống có thể hoạt động độc lập. Việc đồng bộ thông tin được thực hiện trên 2 nhóm này đảm bảo ứng dụng và hệ thống có cùng một cơ sở xác thực.

2.2. Giải pháp cho xác thực và đăng nhập trên ứng dụng windows

Một điều rõ ràng là xác thực trên ứng dụng sẽ hoạt động theo mô hình khác trừ phi chúng ta sử dụng một Module xác thực thông qua giao thức HTTP cắm trực tiếp trên Database server (cụ thể là SQL server). Song không phải ứng dụng nào cũng sử dụng http để khởi tạo phiên đăng nhập như vậy, nó khá là phiền phức và thậm chí là “rủi ro” vì xét về phương diện mạng, máy chủ dữ liệu lại phải mở và quản lý cả cổng dịch vụ HTTP. Các lập trình viên thì có thể không để ý đến điều này nhưng các nhà quản trị mạng lại đau đầu. Vậy giải pháp ở đây là gì? Tôi xin đưa ra một mô hình mà có thể sử dụng một phần mô hình của DNN, và đưa thêm một số quy trình xác thực trên những modules có sẵn của .NET.

Các thành phần sẽ sử dụng trong mô hình xác thực được đưa ra

1. Quy trình của việc xác thực được đưa ra trong mô hình dưới đây

2. Các thành phần đã thiết kế được kích hoạt trong quá trình xác thực

3. Quy trình của xây dựng ứng dụng với các thành phần đã đưa ra

3. Mã nguồn của các thành phần (Component source codes)

Các bạn có thể download bài viết đầy đủ tại đây với toàn bộ mã nguồn.
URL của bài viết này::http://www.vnschool.net/modules.php?name=News&file=article&sid=745