Nhu cầu bảo mật trong các ứng dụng web hiện nay rất lớn. Xa xưa khi xây dựng các ứng dụng web lập trình viên thường phải tự viết nên các framework bảo mật: quản lý người dùng, vai trò, quyền hạn riêng của mình, điều này rất tốn công sức và đôi khi để lộ ra những lỗ hổng bảo mật cho hệ thống nếu không design, code, test cẩn thận.
Ngày nay hiếm khi chúng ta phải thực hiện điều này bởi hầu hết các framework đều đã hỗ trợ tính năng này một cách mặc định. Với .NET framework đó chính là Membership Provider (ASP.NET 2.0), SimpleMembership (ASP.NET 4.5), Universal Provider (ASP.NET 4.0), Identity (ASP.NET 4.5.1).
Nếu bạn viết các ứng dụng web chỉ sử dụng SQL Server để lưu trữ thông tin người dùng và không yêu cầu quá phức tạp về mở rộng như hỗ trợ OAuth đăng nhập với Facebook, Google… hoặc lưu trữ thông tin người dùng trên Cloud như Azure… thì hoàn toàn có thể sử dụng Membership Provider đã có từ .NET 2.0
Trong bài viết này chúng ta sẽ cùng tìm hiểu cách tạo ra authenticationservice dựa trên Membership provider để các ứng dụng client như windows form (WPF, Windows 8), mobile app (Windows Phone, iOS, Android) có thể sử dụng để định danh (authenticate) cũng như xác thực (authorize) được các lời gọi service.
Để bắt đầu thực hiện bạn cần có Visual Studio 2013: download tại đây và SQL Server: download tại đây
Bước 1: Tạo project và đổi từ Universal Provider về Membership Provider
Đầu tiên tạo project ServerDemoApp, chú ý lựa chọn Framework 4.0
Sau đó mở file web.config. Hiện thời với project template trên đã sử dụng Universal Provider ta cần thay lại bằng Membership Provider
Bước 2: Tạo database và sinh các table, view, stored cho membership
Dùng SQL Server Management Studio tạo database chứa thông tin người dùng
Sau đó chạy tool aspnet_regsql.exe từ thư mục C:\Windows\Microsoft.NET\Framework64\v4.0.30319 như bên dưới
Thực hiện theo wizard để sinh các table, view, stored membership
Chú ý: Sửa lại SQL server cho đúng đường dẫn của bạn
Các table, view, stored membership đã được sinh thành công
Bước 3: Cấu hình connectionString trong web.config trỏ đến database mới tạo
Sau khi đã có database với các table, view, stored membership bước cuối cùng là trỏ lại connectionString trong web.config để Profile, Role, Membership, SessionState cùng sử dụng database này.
Bước 4: Chạy ứng dụng và thử đăng ký người dùng
Ctrl+F5 từ Visual Studio để chạy ứng dụng sau đó đăng ký thử một người dùng
Mọi thứ đã thành công, thông tin người dùng đã được lưu trữ trong database MembershipDemo.
Bước 5: Cung cấp Authentication Service cho các ứng dụng desktop, mobile sử dụng
Sau khi đã khởi tạo thành công membership provider, bước cuối cùng là tạo authentication service giúp cho các ứng dụng desktop, mobile có thể sử dụng để authenticate và authorize (authentication mobile app).
Đầu tiên cần tạo một wcf service
Xóa file interface và code behind của wcf service vừa tạo
Sửa file MembershipAuthenticationService.svc trỏ đến System.Web.ApplicationServices.AuthenticationService
Sửa web.config bổ sung aspNetCompatibilityEnabled = “true” và bật AuthenticationService trong web.extensions.
1 2 3 4 5 6 7 | <system.web.extensions> <scripting> <webServices> <authenticationService enabled="true" /> </webServices> </scripting> </system.web.extensions> |
Service Authentication đã được cấu hình thành công và các ứng dụng desktop/mobile có thể sử dụng ngay service này để login/logout/validate người dùng. Ta thử browser service sẽ thấy như sau:
Kết luận
Trong bài viết này đã hướng dẫn các bạn cách thức từng bước để tạo ra AuthenticationService cho các ứng dụng desktop/mobile kết nối đến và sử dụng để login/logout/validate người dùng sử dụng ASP.NET Membership Provider đã có từ .NET 2.0. Trong các bài viết sau chúng ta sẽ cùng tìm hiểu thêm về các framework khác như Universal Provider, Identity… cũng như cách thức login/logout/validate user từ các ứng dụng mobile.
SourceCode Demo các bạn có thể download tại đây: ServerDemoApp
AuthenticationService trong bài viết này đang trả về dữ liệu dạng XML, nếu các bạn muốn trả về dữ liệu dạng JSON cho dễ xử lý trên mobile có thể tham khảo bài viết bên dưới:
Happy sharing. Stay tuned.
Lương Từ says
Bài viết này rất hữu ích. Nhưng em có thắc mắc là cũng từ wfc service trên chuyển về dạng Json rồi viết app android kết nối Json thì phải làm như thế nào ạ?
Duc Yem says
Sau khi tạo service như trên thành công. Mình tạo form đăng nhập
”
ServiceReference1.AuthenticationServiceClient client = new ServiceReference1.AuthenticationServiceClient();
if (client.ValidateUser(“u1″,”1″,null))
{ label1.Text = “Dang nhap thanh cong”; }
else
{ label1.Text = “Khong thanh cong”; }
”
Khi chạy bị báo lỗi:
”
An unhandled exception of type ‘System.ServiceModel.FaultException’ occurred in mscorlib.dll
”
Làm ơn chỉ giúp cách khắc phục. Xin cảm ơn
tungnt185 says
Chào bạn,
Hiện tại service trên còn thiếu một bước cấu hình là bật authenticationservice trong web.extensions để có thể sử dụng service từ bên ngoài.
Mình đã bổ sung bài viết và source code, bạn có thể download về để thử nghiệm.
Rất cảm ơn bạn đã góp ý