2012-04-10 25 views
7

Piszę serwer używał szablonu ASP.NET Web Api i wdrażanie usług odpoczynku. Ten serwer będzie zapleczem dla gry mobilnej, w której będzie przechowywać najlepsze wyniki użytkowników, postępy i inne informacje. Spojrzałem na kilka podejść (this, this i this) i mam problem z podjęciem decyzji, jakie podejście zastosować. W moim przypadku chciałbym zapobiec oszustwom wyników przede wszystkim dlatego, że każde konto użytkownika będzie zawierało ograniczone informacje (poza pocztą e-mail). Oto, co by się idealnie wydarzyło.Uwierzytelnianie i autoryzacja za pomocą REST i ASP.NET Web Api z wieloplatformowych aplikacji mobilnych

  1. Użytkownik otwiera aplikację po raz pierwszy
  2. użytkownik otrzymuje opcję niestandardową nazwę użytkownika i jest to sprawdzane przez serwer, więc nie są powiela
  3. użytkownik otrzymuje losowo generowany sześciocyfrowy numer PIN (więc mogą używać tego samego konta na różnych telefonach)
  4. użytkownik wpisuje adres e-mail
  5. Nowy użytkownik zostanie utworzony na serwerze (serwer sprawdza, czy konto zostało utworzone przy pomocy ważnego przykład mojej aplikacji klienckiej)
  6. Użytkownik gra grę, przesyła wyniki (Przez podstawowe uwierzytelnianie?)
  7. Użytkownik może przeglądać globalne wyniki (brak bezpieczeństwa na metody GET, które nie są specyficzne dla użytkownika)

Mam problemy zawężenie jaki rodzaj uwierzytelniania (bez ekranów logowania przeglądarka i takie) oraz zezwolenia metody użycia. Każda pomoc będzie bardzo ceniona.

-Tamas

+0

Być może podstawowe uwierzytelnienie byłoby w tym przypadku wystarczające? Ale nadal nie jestem pewien, jak upewnić się, że ktoś uzyskuje dostęp do interfejsu API przez prawidłowego klienta. – tamaslnagy

Odpowiedz

5

Nawet jeśli używasz podstawowego uwierzytelniania, będziesz chciał używać HTTPS. Jeśli korzystasz z protokołu HTTPS, możesz również użyć certyfikatów klienta do weryfikacji klienta. Tylko klienci z ważnym certyfikatem otrzymają dostęp. Jeśli nie otwierasz tego API innym klientom i będzie on używany tylko przez klienta opracowanego przez ciebie, możesz chcieć rozważyć WS-Security i WCF. Jest zabawny opis różnic, używając nagich kierowców motocykli jako metafory here.

+0

Będę używać wielu języków (Java, Obj-C i C#/.NET), więc nie wiem, czy metoda ws-security/wcf działałaby. Czy metoda certyfikatu klienta działa na różnych platformach? – tamaslnagy

+0

Jeśli będzie to platforma wieloplatformowa, polecam trzymać się z usługą REST. Certyfikat klienta jest wieloplatformowy. –

+0

Brzmi nieźle. Przyjrzę się temu.Ponadto, nigdy nie rozumiałem, jak początkowa rejestracja miała miejsce z podstawowym systemem uwierzytelniania, tj. Kiedy wprowadzona nazwa użytkownika i hasło nie znajdują się jeszcze w bazie danych serwera. – tamaslnagy

1

Jeśli to z różnych klient/urządzeń, coś jak uwierzytelnianie oparte tokena może pracować dla Ciebie.

Pomysł jest prosty, masz metodę uwierzytelniania w swojej usłudze sieci Web. Ta metoda jest odpowiedzialna za sprawdzanie poświadczeń i wydawanie "Token". Niektóre proste struktury, takie jak ciąg SHA1 lub MD5, którego używają wszystkie dalsze wywołania klienta.

Jeśli klient jest uwierzytelniony, przechowuje token przez całą sesję. Pozostałe metody usług sieciowych, takie jak SaveScore, akceptują token jako parametr. Następnie odpowiedzialni za sprawdzenie, czy jest on ważny, czy nie. Jeśli token nie jest ważny, połączenie nie jest obsługiwane.

+0

Jeśli to możliwe, wolałbym podstawowe uwierzytelnianie za pomocą metod opartych na tokenach. – tamaslnagy

Powiązane problemy