Controllo delle autorizzazioni per i contenuti sul server Web (pattern / architettura)

1

Sto lavorando a un proof of concept per un progetto personale e sono incerto su come gestire le "autorizzazioni" sul contenuto che viene caricato nell'applicazione.

Problema: In questa applicazione gli utenti saranno in grado di caricare media / file sul server web. Alcuni contenuti saranno pubblici, alcuni contenuti richiederanno l'autenticazione dell'utente e alcuni contenuti saranno condivisi solo con utenti specifici (si pensi ai social media / cloud storage).

Non sono sicuro di come implementarlo in modo efficiente ...

Ulteriori informazioni:

    UI      |   Comms   |  Web Server (Linux OS)
------------------------------------------------
Xamarin/web |   JSON    | .NET (mono) + MySQL
  • Presupposto: non è possibile inviare immagini tramite JSON, come tali collegamenti a immagini / file vengono inviati avanti e indietro dal server.
  • Architettura RESTful
  • Web Server verrà eseguito su un sistema operativo basato su Unix (finora ha utilizzato Ubuntu)

Domande:

  1. Come farei per garantire che gli utenti non autenticati non possano collegarsi a immagini / file ospitati sul server? (.Htaccess?)
  2. In che modo posso garantire che gli utenti autenticati non possano accedere a immagini / file per i quali non sono autorizzati? (cioè tramite hotlinking)

Scusa se questa è una domanda stupida, ho pochissima esperienza con le applicazioni web.

    
posta zaza 17.03.2017 - 01:00
fonte

1 risposta

0

Dopo qualche ulteriore ricerca ho capito come funziona, non ho capito bene come funzionano le richieste / risposte HTTP e JWT. Rispondere alla mia domanda encase aiuta chiunque altro o se qualcuno può trovare problemi nella mia logica.

Alcuni background (anche se sospetto che il pattern sia simile indipendentemente dalle tecnologie utilizzate); il mio server web utilizza ASP.NET Core ed è progettato utilizzando un modello RESTful. Una volta che un utente viene autenticato sul server riceve un token JWT crittografato, questo token deve essere fornito per accedere agli endpoint che forniscono risorse specifiche dell'utente (ad esempio immagini, dati privati).

Il token JWT contiene un reclamo che consentirà al server di identificare il percorso dei dati personali dell'utente (questo percorso si trova in una posizione non pubblica che non è accessibile esternamente). Una volta che il token è stato convalidato, il server troverà la risorsa internamente in base al reclamo e invierà il file come risorsa immagine ( esempio ). Ciò significa essenzialmente che il client non può accedere direttamente a un'immagine sul server Web, il client deve sempre richiedere una risorsa da un endpoint server specifico.

Sospetto che questo sia il modo in cui il lavoro di altre web api si basa sull'ispezione delle richieste HTTP inviate / ricevute per diversi siti come Facebook / Foursquare.

    
risposta data 26.04.2017 - 02:43
fonte