Abbiamo un'applicazione web a pagina singola esistente alimentata da endpoint ASP.NET WebApi. Questi endpoint sfruttano SimpleMembership e Autenticazione moduli per gestire l'autorizzazione e l'autenticazione:
[System.Web.Http.HttpPost]
[Route("api/login")]
[System.Web.Http.AllowAnonymous]
public HttpResponseMessage LogIn(LoginModel model) {
if (!WebSecurity.UserExists(model.Username))
return Request.CreateResponse(HttpStatusCode.OK, new ApiResponseDto() { Success = false, Error = "Email or Password is incorrect." });
if (_userService.LoginWork(model.Username) && WebSecurity.Login(model.Username, model.Password, persistCookie: true)) {
return Request.CreateResponse(HttpStatusCode.OK, new ApiResponseDto() { Data = true });
}
LogOut();
return Request.CreateResponse(HttpStatusCode.OK, new ApiResponseDto() { Success = false, Error = "Login Failed" });
}
Ora stiamo sviluppando un'app nativa per iOS e vorremmo riutilizzare questi endpoint API nel nome della semplicità. Per fare ciò, utilizziamo token CSRF così come i cookie per gestire l'autenticazione da entrambe le app native e web.
Mi piace l'idea di mantenere le cose semplici e di non riscrivere ~ 100 endpoint API solo per supportare i dispositivi mobili, ma non se devo scendere a compromessi sulla sicurezza. Questa soluzione è "sicura" come l'implementazione standard di una pura implementazione basata su token OAuth2? In caso negativo, perché?