2011-01-13 12 views
8

Tworzę witrynę z szablonu usługi REST usługi WCF 40 (CS) z szablonów online VS 2010. Działa świetnie, ale muszę go zabezpieczyć.Jak ustawić uwierzytelnianie oAuth dla WCF REST C# Site

Potrzebuję do obsługi aplikacji Windows, Linux i iPhone, więc REST + OAuth wydaje się dobrym rozwiązaniem, ale nie wiem od czego zacząć.

Zasadniczo potrzebuję rozwiązać nazwę użytkownika/hasła (oczywiście hash) do mojej bazy danych, jak tradycyjne formularze auth.

Odpowiedz

9

OAuth nie przesyła nazwy użytkownika/hasła. OAuth wysyła nagłówek OAuth w nagłówku HTTP Auth. Twoja usługa będzie musiała to wyciągnąć, a następnie przetestować, aby upewnić się, że jest ważna.

Nagłówek OAuth będzie zawierał w sobie kilka wartości (znacznik czasu, klucz konsumenta, nieszyfrowany) bez szyfrowania. Możesz wziąć te niezaszyfrowane wartości i użyć klucza niezaszyfrowanego do wyszukania tajnego klucza, którego twoja usługa będzie używała do szyfrowania tych samych wartości i upewnienia się, że pasuje do podpisu, który jest również zawarty w nagłówku OAuth. Jeśli wygenerowany podpis jest zgodny z sygnaturą zawartą w nagłówku OAuth, to wiesz, że żądanie HTTP jest dobre. Następnie możesz usunąć klucz konsumenta z nagłówka i użyć go do wyszukania nazwy użytkownika, jeśli zajdzie taka potrzeba.

Zobacz my post here. Weź pod uwagę, że istnieje kilka dobrych bibliotek, które ułatwiają to wszystko, na przykład DotNetOpenAuth.

+4

Naprawdę muszę po prostu napisać zachowanie OAuth dla WCF ... –

Powiązane problemy