Zabezpieczenie usługi WCF przed nieautoryzowanym dostępem
#1
Chciałbym napisać aplikację w C#, która mogłaby w dość prosty sposób instalować inne programy (można powiedzieć, że jest ona trochę podobna do Windows Store/App Store/Google Play). Informacje o tych programach byłyby w bazie danych znajdującej się na publicznie dostępnym (nie w obrębie jakiegoś Intranetu) serwerze dedykowanym.
Zastanawiam się, w jaki sposób przebiegałaby komunikacja pomiędzy aplikacją a serwerem. Myślę nad napisaniem usługi sieciowej wykorzystującej WCF, ale jest jeden problem - domyślnie każdy mógłby podpiąć się pod tą usługę, do czego nie chciałbym dopuścić. Próbowałem poszukać informacji nt. zabezpieczania usług WCF, ale nie mogłem znaleźć żadnego dobrego rozwiązania.
Czy istnieje jakiś skuteczny sposób na zabezpieczenie publicznie dostępnej usługi napisanej przy użyciu WCF? Albo czy macie jakiś inny pomysł na komunikację pomiędzy serwerem a tą aplikacją?

Z góry dzięki za pomoc Smile
Odpowiedz
#2
A jakieś szyfrowanie?
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz
#3
Poszukaj czegoś związanego z autoryzacją (standardowo użytkownik hasło), albo dla aplikacji serwerowej napisz coś co daje dostęp do usługi administracyjnej tylko wtedy, gdy adres z którego się łączymy jest na hmm "adminliście", przy czym adresy te powinny być zaszyfrowane i dynamicznie odszyfrowywane w aplikacji.
0x DEADBEEF
Odpowiedz
#4
O borze.
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz
#5
Sorka za późną odpowiedź, ale byłem na długim wyjeździe :/

(31.05.2016, 17:21)chomikos napisał(a): Poszukaj czegoś związanego z autoryzacją (standardowo użytkownik hasło), albo dla aplikacji serwerowej napisz coś co daje dostęp do usługi administracyjnej tylko wtedy, gdy adres z którego się łączymy jest na hmm "adminliście", przy czym adresy te powinny być zaszyfrowane i dynamicznie odszyfrowywane w aplikacji.
Autoryzacja - użytkownik nie musi mieć konta, aby uzyskać dostęp do tego "sklepu", więc niestety odpada.
Adminlist - każdy może korzystać z aplikacji, a nie określone osoby, więc również nie mogę zastosować takiego rozwiązania.

(31.05.2016, 16:41)Tajny Współpracownik napisał(a): A jakieś szyfrowanie?
Też nad tym myślałem, tyle że hasło szyfrujące musiałoby być przechowywane w aplikacji (albo na serwerze w publicznie dostępnym miejscu (poprawcie mnie, jeśli się mylę, bo nie znam się zbytnio na tym)), przez co prędzej czy później ktoś by uzyskał dostęp do tego hasła.
Odpowiedz
#6
Łączysz się przez SSL i SSL-em wysyłasz dane do autoryzacji. W wiresharku będzie widać że coś idzie, ale nie wiadomo co.
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz
#7
GPG.
Można je wykorzystać najpierw do przesłania klucza klienta (szyfrując go publicznym serwera), a później do wymiany danych (wykorzystując już klucze klienta).
Odpowiedz




Użytkownicy przeglądający ten wątek: 1 gości