Chcę uwierzytelnić użytkownika z aplikacji klienckiej podczas korzystania z interfejsu API sieci Web ASP.NET . Obejrzałem wszystkie filmy na stronie, a także przeczytałem ten post na forum .
Umieszczenie [Authorize]
atrybutu poprawnie zwraca 401 Unauthorized
status. Muszę jednak wiedzieć, jak zezwolić użytkownikowi na zalogowanie się do interfejsu API.
Chcę podać poświadczenia użytkownika z aplikacji na Androida do interfejsu API, zalogować się, a następnie wstępnie uwierzytelnić wszystkie kolejne wywołania interfejsu API.
android
.net
authentication
asp.net-web-api
Mujtaba Hassan
źródło
źródło
Odpowiedzi:
Wraz z żądaniem należy wysłać prawidłowy plik cookie do uwierzytelniania za pomocą formularzy. Ten plik cookie jest zwykle wysyłany przez serwer podczas uwierzytelniania (
LogOn
akcji) poprzez wywołanie[FormsAuthentication.SetAuthCookie
metody (patrz MSDN ).Klient musi więc wykonać 2 kroki:
LogOn
akcji, wysyłając nazwę użytkownika i hasło. Ta akcja z kolei wywołaFormsAuthentication.SetAuthCookie
metodę (w przypadku, gdy poświadczenia są prawidłowe), co z kolei ustawi plik cookie uwierzytelniania formularzy w odpowiedzi.[Authorize]
akcji chronionej, wysyłając plik cookie uwierzytelniania formularzy, który został pobrany w pierwszym żądaniu.Weźmy przykład. Załóżmy, że masz 2 kontrolery API zdefiniowane w swojej aplikacji internetowej:
Pierwszy odpowiedzialny za obsługę uwierzytelniania:
a druga zawiera chronione akcje, które mogą zobaczyć tylko upoważnieni użytkownicy:
Teraz możemy napisać aplikację kliencką korzystającą z tego API. Oto trywialny przykład aplikacji konsolowej (upewnij się, że masz zainstalowane pakiety
Microsoft.AspNet.WebApi.Client
iMicrosoft.Net.Http
NuGet):A tak wyglądają 2 żądania HTTP w sieci:
Żądanie uwierzytelnienia:
Odpowiedź uwierzytelniająca:
Wniosek o chronione dane:
Odpowiedź na chronione dane:
źródło
Jako przykład biorę androida.
Uwaga, proszę : i.localhost nie może być używany. Urządzenie z Androidem wygląda jak lokalny host. ii. w przypadku wdrażania internetowego interfejsu API w usługach IIS należy otworzyć uwierzytelnianie formularza.
źródło
Użyj tego kodu i uzyskaj dostęp do bazy danych
źródło