Tôi đã thực hiện một Dịch vụ Web RESTful đơn giản (chỉ GET, cho đến bây giờ) bằng cách sử dụng Microsoft ASP.NET MVC 4 ApiController
.Microsoft MVC 4, APIController và Dịch vụ Web đăng nhập RESTful thích hợp
Bây giờ tôi đang tìm đúng cách để triển khai hệ thống ủy quyền cho dịch vụ. Tôi biết tôi không muốn sử dụng được xây dựng trong FormsAuthentication
, vì tôi không muốn có một trang đăng nhập duy nhất cho tất cả các ứng dụng bằng cách sử dụng WS của tôi; hơn nữa, nó phá vỡ mô hình RESTful, buộc chuyển hướng và không thông báo cho khách hàng với mã trạng thái thích hợp 401
.
Vì vậy, tôi đã vô hiệu hóa FormsAuthentication
xóa những dòng này từ tôi web.config
:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
và thêm những điều sau đây:
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
</modules>
Tôi đã có tài ApiController
để quản lý việc đăng nhập tài khoản, mà về cơ bản kiểm tra thông tin đăng nhập vào cơ sở dữ liệu của tôi và trả lại người dùng hoặc 401
nếu thông tin đăng nhập không hợp lệ.
Tôi đã đọc rằng tôi phải triển khai API Membership
và Authorization
, nhưng tôi không tìm thấy gì giúp tôi thực hiện từ đầu. Bạn có ý tưởng gì không? Tôi có cần phải quản lý cookie và authcodes trên cơ sở dữ liệu hoặc là có một lớp học tương tự để FormsAuthentication
mà nó cho tôi?
Có vẻ như tôi cần ví dụ đầu tiên, 'BasicAuthentication'. Nhưng tôi chưa hiểu nếu có một cách để lưu trữ các authcode (Tôi sẽ không gửi tên người dùng và mật khẩu cho khách hàng như authcode) trong một cơ sở dữ liệu. – frapontillo
Tôi không chắc mình hiểu ý của bạn là "cách lưu trữ mã xác thực". Mô tả của bạn về authcode là gì. Với xác thực cơ bản, bạn muốn mã hóa tên người dùng/mật khẩu được gửi qua và giải mã nó ở đầu bên kia.Bạn cũng muốn sử dụng HTTPS/SSL/TSL với xác thực cơ bản để mã hóa toàn bộ thư trên dây. Khi lưu trữ mật khẩu trong DB, tôi luôn sử dụng mã hóa một chiều cho mật khẩu đã lưu. Sau đó, bạn sử dụng cùng một mã hóa trên mật khẩu người dùng nhập trước khi thực hiện so sánh những gì có trong DB. –
Tôi muốn tạo một mã số tạm thời cho mỗi lần đăng nhập và lưu trữ nó trong cơ sở dữ liệu. Mà tôi nghĩ là điều tương tự mà FormsAuthentication thực hiện: nó tạo ra một mã ủy quyền phiên được liên kết chặt chẽ với người dùng đã đăng nhập. – frapontillo