WCF, ASP.NET Autoryzacja

0

Witam, mam zamiar stworzyć pewną aplikację, której struktura będzie wyglądała mniej-więcej tak :

Serwer z bazą danych MySQL <---------> Serwer z uruchomioną usługą WCF
| |
strona www w ASP.NET aplikacja na Windows Phone 7

W skrócie : aplikacja WP7 lub strona, łączy się z serwisem WCF, on z bazą danych na innym serwerze.

i tutaj zaczyna się kłopot z autoryzacją, poczytałem troszeczkę, ale dalej nie wiem jak rozwiązać ten problem. Dodam, że serwer z usługą WCF będzie hostowany na Apachu, więc nie będzie IIS oraz MsSQL, co za tym idzie, nie zadziałają gotowe klasy do autoryzacji.

Myślałem, aby zbudować taki system autoryzacyjny :

Aplikacja użytkownika (ASP.NET, WP7), ma możliwość wpisania loginu i hasła, hasło jest hashowane i solone w SHA1 i obie te wartości są wysyłane do WCF, WCF łączy się z bazą danych i wyjmuje z tabeli login, hasło (w sha1 + salt) następnie, jeśli wartości się zgadzają, generowany jest GUID, a te 3 wartośći (login,hasło,guid) wrzucane są na serwerze do Cachu. Gdy logowanie się nie powiedzie -> Exception, jeśli zaś się uda, zwracany jest guid, który będzie cały czas przekazywany między aplikacjami i sprawdzany na serwerze. Nie wiem, gdzie go "upchnąć" ale pewnie gdzieś w Context, aby nie trzeba było dodawać go do każdej metody (jako parametr), którą chcemy wykonać w WCF.

Chciałbym się dowiedzieć, czy takie coś jest bezpieczne, oraz czy jest może jakiś inny, lepszy sposób mój pomysł.

0

Generalnie to nie potrzeba Ci MySql aby zrobić autoryzację, dosyć ładnie prezentuje się dodawanie atrybutów nad metodami fasady usługi WCF [PrincipalPermission] i proponowałbym o tym poczytać.
Dalej jeśli mówisz o identyfikowaniu sesji klienta poprzez przekazywanie przez niego klucza sesji, to jesli nie chcesz przekazywać tego jako parametru, możesz wrzucić w nagłówki soapu.
Lecz pojawia się możliwość kradnięcia sesji :P
Może Certyfikaty? Aczkolwiek mam jakiś straszny uraz do nich, bo zawsze coś nie działa.

0

Na pewno poczytam o tym Co napisałeś, zaś co do SOAP, to zobaczymy bo z jednej strony zarówno ASP.NET i WP7 jest w c# więc można użyć TCP i przesyłu binarnego, zaś z drugiej ponoć WP7 ma poblokowane porty i zostaje jedynie komunikacja HTTP. W takim wypadku pozostaje chyba użycie WSFederationHttpBinding

0

w soap możesz wrzucić także dane zserializowane binarnie. To tylko XML.
A WSFederationHttpBinding domyślnie SOAP-u nie używa do komunikacji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1