Uwierzytelnianie w .NET Web API przy użyciu MVC FormsAuthentication

Dysponujemy aplikacją jednostronicową wykorzystującą framework AngularJS, która musi rozmawiać z API zaimplementowanym w .NET Web API w innej domenie.

Problem

API jest zaimplementowane w .NET Web API. Aby uwierzytelnić użytkownika w celu uzyskania dostępu do naszego interfejsu API, zaimplementowaliśmy szablon aplikacji MVC Single Page Application. Używa FormsAuthentication, aby przyznać dostęp do API.

Użyliśmy Fiddlera do debugowania. Kiedy odwiedziliśmy kontroler API, który wymagał uwierzytelnienia bezpośrednio w przeglądarce, możemy potwierdzić, że użytkownik rzeczywiście został uwierzytelniony. Kiedy podejrzewaliśmy XMLHttpRequest, w nagłówkach nie wysłano żadnych plików cookie uwierzytelniających.

To, co chcielibyśmy osiągnąć, to użycie FormsAuthentication, aby uzyskać dostęp do .NET Web API, miejmy nadzieję poprzez XMLHttpRequests.

Jednym z proponowanych rozwiązań było współdzielenie sesji między .NET Web API a MVC. Jak łatwo utrzymać stan między interfejsem API .NET Web i częścią projektu MVC?

Wiemy, że nie jest to zbyt PRZYWRÓCONE, ale potrzebujemy szybkiego rozwiązania tego problemu.

PS! FormsAuthentication działa z kontrolerami .NET Web API przy użyciu atrybutu [Authorize]. Tyle tylko, że kontrolery nie mogą być zajęte przez XMLHttpRequests.

Zrzut ekranu skrzypka podczas używania XMLHttpRequest

Zrzut ekranu skrzypka, gdy żądanie jest wykonywane bezpośrednio w przeglądarce

Zrzut ekranu kontrolera uwierzytelniania do przetestowania

questionAnswers(1)

yourAnswerToTheQuestion