2011-01-13 18 views
8

Tôi đang tạo trang web từ WCF REST Service Template 40 (CS) từ mẫu trực tuyến VS 2010. Nó hoạt động rất tốt nhưng tôi cần phải bảo đảm nó.Làm cách nào để đặt xác thực oAuth cho WCF REST C# Site

Tôi cần hỗ trợ cửa sổ, ứng dụng Linux và iPhone để REST + oAuth có vẻ như là giải pháp tốt nhưng tôi không biết bắt đầu từ đâu.

Về cơ bản, tôi cần phải giải quyết tên người dùng/mật khẩu (cho băm tất nhiên) vào cơ sở dữ liệu của tôi như biểu mẫu truyền thống auth.

Trả lời

9

OAuth không truyền tên người dùng/mật khẩu. OAuth gửi tiêu đề OAuth bên trong tiêu đề Xác thực HTTP. Dịch vụ của bạn sẽ cần phải rút ra và sau đó kiểm tra nó để đảm bảo nó hợp lệ.

Tiêu đề OAuth sẽ có trong đó một loạt các giá trị (dấu thời gian, consumer_key, nonce) không được mã hóa. Bạn có thể lấy các giá trị không được mã hóa này và sử dụng khóa không mã hóa để tra cứu khóa bí mật mà dịch vụ của bạn sẽ sử dụng để mã hóa các giá trị đó và đảm bảo khớp với chữ ký cũng được bao gồm trong tiêu đề OAuth. Nếu chữ ký được tạo của bạn khớp với chữ ký được bao gồm trong tiêu đề OAuth, thì bạn biết rằng yêu cầu HTTP là tốt. Sau đó, bạn có thể lấy khóa người tiêu dùng ra khỏi tiêu đề và sử dụng nó để tra cứu tên người dùng nếu bạn cần.

Xem my post here. Hãy nhớ rằng có một số thư viện tốt để làm cho tất cả điều này dễ dàng hơn, như DotNetOpenAuth.

+4

Tôi thực sự cần phải tiếp tục và viết hành vi OAuth cho WCF ... –

Các vấn đề liên quan