2015-02-04 12 views
8

Widziałem kilka sposobów skonfigurowania obsługi zewnętrznego dostawcy dla uwierzytelniania w ASP.NET Web API przy użyciu Tożsamości, jednak wszystkie one polegają na pliku cookie, który jest ustawiony po użytkowniku jest pomyślnie autoryzowany przez zewnętrznego dostawcę (zwanego "AspNet.External"), który następnie musi zostać przekazany do punktu końcowego tokenu w samym interfejsie API.Web ASP ASP.NET Identity External Providers Web API bez plików cookie

Czy istnieje sposób obejścia tego i korzystania z zewnętrznego uwierzytelniania z ASP.NET Web API bez konieczności korzystania z plików cookie? Powodem tego jest to, że chciałbym zintegrować to uwierzytelnienie w mojej aplikacji mobilnej, ale użytkownik może wyłączyć pliki cookie w dowolnym momencie, czyniąc moją aplikację bezużyteczną.

+0

W regularnych projektu asp.net, można użyć sesji za pomocą plików cookie „url”, czyli unikalnego identyfikatora do identyfikacji sesji jest oznaczony na Adres URL jako zapytanie kwerendowe. Mam nadzieję, że jeśli zdobędziesz taki przykład w web api, rozwiąże to twój cel. –

+0

Nie jest dla mnie jasne, o co tutaj prosisz. Każde żądanie musi się jakoś utożsamiać, a to zwykle z ciasteczkiem, ponieważ jest to najbezpieczniejszy sposób na zrobienie tego. Możesz użyć parametru zapytania, ale jest to bardzo niebezpieczne, ponieważ zapytania są zapisywane w dziennikach routingu i proxy, a także w dziennikach serwera. –

+0

Tak, rozumiem, że żądanie wymaga sposobu identyfikacji, ale nie jestem pewien, czy plik cookie jest najlepszym sposobem, aby to zrobić, ponieważ przy wyłączonych ciasteczkach uwierzytelnianie po prostu nie zadziała. A może ciasteczka będą tymczasowo przechowywane w WebView, nawet jeśli są rzeczywiście wyłączone? Chodzi mi tylko o to, aby uwierzytelnianie zadziałało na wszystkich urządzeniach. –

Odpowiedz

7

Co z wykorzystaniem OAuth2?

  1. Budowanie serwera OAuth2 z https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/,
  2. Ustaw serwer web app api jako serwer zasobów oraz umożliwiają uwierzytelnianie OAuth okaziciela, które wykorzystują Authentication Header, a nie ciasteczko.
  3. Po uzyskaniu access_token z serwera oauth2, ustaw nagłówek Authentication dla żądania klienta.

można sprawdzić kod tutaj:

https://github.com/beginor/owin-samples

+2

Myślałem, że łatwiejsze i prostsze rozwiązanie powinno być dostępne. Oznaczałoby to niemalże czystą implementację naziemną ... –