Il modo più comune per fornire sicurezza in un'applicazione API Web è l'utilizzo dell'attributo [Authorize] incorporato. Puoi leggere ulteriori informazioni sull'autenticazione nell'API Web qui . L'attributo Authorize dipende dall'appartenenza ASP.NET o dal framework di identità. È possibile utilizzare il sistema di appartenenza o il sistema di identità. Consiglierei il framework dell'identità poiché è più recente e il modello che verrà supportato in futuro. Puoi leggere ulteriori informazioni sul framework di identità di ASP.NET qui . Un'applicazione di esempio che implementa l'autorizzazione e l'autenticazione utilizzando il framework di identità ASP.NET può essere trovata qui . Fornirò alcuni esempi comuni.
Per limitare l'accesso a tutti i controller / percorsi a livello globale:
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new AuthorizeAttribute());
}
Per limitare l'accesso ai singoli controller:
// Require authorization for all actions on the controller.
[Authorize]
public class ValuesController : ApiController
{
//Allow anonymous access on Get, but restrict all other actions
[AllowAnonymous]
public HttpResponseMessage Get(int id) { ... }
public HttpResponseMessage Post() { ... }
}
Per limitare l'accesso a determinate azioni:
public class ValuesController : ApiController
{
// Anonymous access is allowed on Get
public HttpResponseMessage Get() { ... }
// Require authorization for Post.
[Authorize]
public HttpResponseMessage Post() { ... }
}
Per limitare l'accesso a un ruolo / utente specifico:
public class ValuesController : ApiController
{
// Anonymous access is allowed on Get
public HttpResponseMessage Get() { ... }
// Require specific user access on Post
[Authorize(Users="Bob,Joe")]
public HttpResponseMessage Post() { ... }
// Require specific role access on Delete
[Authorize(Roles="Administrators")]
public HttpResponseMessage Delete() { ... }
}