93 messaggi dal 25 maggio 2005
Ciao a tutti,
vi espongo la mia situazione:
devo sviluppare un webservice REST (host IIS) che esponga una serie di metodi, alcuni dei quali necessitano un'autenticazione.

Vorrei fare in modo che i client (dispositivi mobile) possano accedere dopo aver inserito login e password da UI. Pensavo fosse facile utilizzare i meccanismi automatici di ASP.NET (membership e role), ma dopo innumerevoli prove non ci sono riuscito.
Ho la necessità di utilizzare un'autenticazione semplice, non avendo la possibilità di utilizzare SSL e/o certificati. Volevo utilizzare un semplice cookie, e se possibile utilizzare quello che fa già asp.net authentication.

Qualcuno può darmi una mano?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
le API non sono un'esclusiva di WCF. Anzi, se la API è destinata ad essere consumata via HTTP come nel tuo caso, sarà più semplice realizzarla con gli strumenti che ASP.NET ti mette a disposizione.
Del resto hai già detto che preferiresti usare la Membership, quindi cerchiamo una soluzione che possa far uso del suo cookie di autenticazione.

Con ASP.NET MVC, ad esempio, puoi far autenticare gli utenti da form sfruttando la Membership (o la SimpleMembership di MVC4, che ti lascia personalizzare la struttura della tabella utenti).
In base al ruolo dell'utente autenticato, potrai consentirgli o negargli l'accesso a determinate actions (o a interi controllers), mediante l'attributo Authorize.

Trattandosi di una API, predisporrei un'Area apposita, così da creare un contenitore logico (es. /api) per ogni operazione che vorrai pubblicare al suo interno. Così sarà anche più facile proteggere l'intera area dall'accesso anonimo grazie ad un filtro come questo.

Le actions della API dovranno dunque restituire un JsonResult, affinché sia semplice lato client, con jQuery, trasformarlo in un oggetto javascript ed usarlo per aggiornare l'interfaccia grafica.

Se invece volessi realizzare un'API REST vera e propria, cioè un'API il cui fulcro sono le risorse (e le operazioni CRUD da compiere su quelle risorse), allora probabilmente userei un ApiController, anch'esso proteggibile da accesso anomino proprio come un controller normale.

Il vantaggio dell'usare un ApiController è che supporta sintassi di interrogazione OData, che ti permette, componendo un URL in maniera appropriata, di farti restituire dal server dei risultati filtrati, ordinati e paginati.
Trattandosi di uno standard, alcuni produttori come Telerik e Ingragistics hanno creato dei controlli griglia che implementano quelle funzionalità a livello visuale, senza che tu debba scrivere molto codice.
La libreria Breeze.js, invece, ti permette di usare una sintassi Linq-like da javascript, che viene tradotta secondo le convenzioni OData per interrogare la tua API REST.

Prova a creare la tua API in uno di questi modi, penso che ti troverai bene.

ciao
Modificato da BrightSoul il 26 aprile 2013 20.02 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.