Authentication mobile app sử dụng ASP.NET Membership Provider

Authentication mobile app sử dụng ASP.NET Membership Provider
5 (100%) 2 votes

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.

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.

Comments

  1. 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 ạ?

  2. 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 ý :)

Trackbacks

Leave a Reply

Your email address will not be published. Required fields are marked *