Tự làm Claims-based Authentication cho ASP.NET Sites kiểu cũ

Framework ASP.NET identity cung cấp cho bạn mọi thứ bạn cần để sử dụng identity Claims-Based. Tuy nhiên, identity Claims-Based có thể được mô phỏng trong ASP.NET cũ bằng cách tùy chỉnh nếu bạn có một nhà cung cấp đăng nhập username / password nội bộ, và cần để có thể hiển thị nhiều thông tin về người sử dụng.

Theo Microsoft, ASP.NET identity là có được các API cho các hệ thống thành viên hiện tại và tương lai được xây dựng xung quanh các trang web ASP.NET. ASP.NET identity làm việc với OWIN-tiêu chuẩn đang được cài đặt cho các máy chủ web và các ứng dụng web để giao tiếp và claims-based identity. Nếu bạn song hành với ASP.NET identity sau đó hầu hết những gì bạn cần làm trong các ứng dụng ngày nay là một nửa, hoặc hoàn toàn, hướng vào framework. Không có gì cần phải nói; mức độ kỹ thuật trong khuôn khổ ASP.NET sắc có lẽ là một nghi can bit; nhưng như xa như chức năng có liên quan, khuôn khổ này là vừa phải.

Tại sao các quan niệm về một 'tuyên bố' trong bản sắc rất hấp dẫn, hoặc chỉ cần thiết, hôm nay tuyên bố dựa trên? Một tuyên bố là một tuyên bố về một bản sắc của một "chủ thể", rất có thể một người dùng cố gắng để đăng nhập vào hệ thống của chúng tôi. Một tuyên bố là một cặp tên-giá trị và mang một giá trị về một khía cạnh cụ thể của người dùng đó. Nhìn chung, tuyên bố hoàn toàn đại diện cho người sử dụng và làm thế nào nó sẽ được trình bày bên trong ứng dụng. Mỗi người sử dụng đăng nhập phải có một tập hợp các khiếu kiện; ở một người sử dụng đăng nhập rất tối thiểu có một cái tên: 'tên người dùng là các tuyên bố chính và cần thiết, nhưng yêu cầu có thể bao gồm một loạt các thông tin về người sử dụng, tất cả được đóng gói trong một mã thông báo an toàn. Một cách khác để nhìn vào tuyên bố là như bộ sưu tập của các thuộc tính của một bản sắc ASP.NET.

Trong ASP.NET cổ điển, cho dù Web Forms hay MVC, tập hợp các khiếu nại liên quan với mỗi danh tính được giới hạn với tên người dùng và có lẽ vai trò. Ứng dụng hiện đại, tuy nhiên, yêu cầu bổ sung thông tin như hình ảnh hoặc avatar, email, và các ứng dụng thông tin cụ thể hơn nữa như một số dư tài khoản, tin nhắn hộp thư đến, múi giờ.

Bài viết này trình bày một cách để mô phỏng dựa trên tuyên bố danh tính trong bối cảnh đồng bằng các trang web ASP.NET cũ. Các giải pháp được trình bày là đủ tổng quát để làm việc với cả hai hình thức Web ASP.NETASP.NET MVC. Bạn có thể không cần nó nếu bạn có kế hoạch để sử dụng ASP.NET Identity.

Việc xác thực token

Để xác thực người dùng, bất kỳ trình duyệt phải xuất trình một thẻ hợp lệ tại cổng của ứng dụng. Các mã thông báo có dạng của một cookie hoặc có lẽ một tiêu đề ủy quyền như trong cơ bản, NTLM hoặc Kerberos xác thực. Các trung gian máy chủ web đánh chặn các yêu cầu và xác nhận được dấu hiệu, qua đó thực hiện xác thực người dùng. Nếu không có thẻ hợp lệ được trình bày, sau đó các trung gian thường được chuyển hướng đến một trang đăng nhập. Sau khi bất kỳ xác thực thành công, yêu cầu mang một mã thông báo hợp lệ đầy đủ các yêu cầu mô tả nhận dạng của người dùng vừa mới đăng nhập.

Tuyên bố về một người sử dụng đăng nhập được lưu trữ trong thẻ bài, nhiều khả năng trong các cookie xác thực. Người chịu trách nhiệm cho việc cung cấp tất cả những thông tin về một người dùng nhất? Và người chịu trách nhiệm cho việc lưu trữ chúng vào các mã thông báo và đọc chúng trở lại? Đây chỉ là những gì mà framework xác thực được dự kiến ​​sẽ làm. Đây là những gì ASP.NET Bản sắc nào cho bạn bằng cách xem xét tuyên bố như công dân hạng nhất và đem lại cho các nhà phát triển một API dễ dàng để truy vấn yêu cầu từ các nhà cung cấp nhận dạng. Những Identity-nhà cung cấp là các nhà cung cấp bên ngoài thường OAuth dựa trên như Facebook và Twitter.

Điều gì nếu các nhà cung cấp danh tính, thay vào đó, là một hệ thống thành viên đồng bằng mà chỉ cần chấp nhận và tên người dùng và mật khẩu quá trình? Trong việc thiết lập một thành viên ASP.NET cổ điển, người dùng đăng nhập và pass vào tên người dùng và mật khẩu. Nếu các thông tin có thể được xác nhận thành công, một cookie xác thực được tạo ra có chứa tất cả các tuyên bố sẵn. Cùng một hệ thống đọc tuyên bố trở lại trong thời gian tới các cookie được trình bày để xác thực người dùng. Tại cốt lõi của nó, sự khác biệt lớn nhất giữa ASP.NET nhận dạng tuyên bố dựa trên bản sắc và thành viên ASP.NET là cốt lõi ASP.NET thành viên chỉ đối xử với tên người dùng như là một yêu cầu bồi thường. Bất kỳ yêu cầu bồi thường có thể khác sẵn có về người sử dụng đăng nhập được bỏ qua và không tiếp tục tồn tại các mã thông báo.

Lấy thêm Users Thông tin Logged

Hãy nói rằng bạn muốn trang web của bạn để trình bày một giao diện người dùng như trong hình, nơi tên người dùng, vai trò thông tin và hình ảnh được hiển thị.