Sto postando questo nella speranza di ricevere feedback/consigli e informazioni su qualcosa che ho avuto difficoltà negli ultimi giorni. Per iniziare darò una rapida ripartizione del progetto.Autorizzazione con token bearer OAuth fornito da API Web esterna
ci sono 2 applicazioni nella soluzione:
WebAPI risorse & server di autorizzazione - Utilizza OWIN (ospitato in IIS) e ASP.NET identità di emettere un token di autenticazione su un corretto login e poi consentire le richieste ai vari controllori.
Applicazione client MVC - Non ha ancora alcuna autorizzazione (fino a quando non l'ho capito) ma effettuerà chiamate al server di risorse WebAPI per ottenere tutti i dati. Queste chiamate verranno sempre e solo effettuate da azioni dei controller nell'app client, senza chiamate AJAX lato client.
L'applicazione client non ha il proprio datasource. Tutte le informazioni sono memorizzate in un database a cui il servizio WebAPI ha accesso, quindi in sostanza se forniscono le credenziali corrette e l'app client riceve un token al portatore, devo fornire un modo affinché l'applicazione possa vederle come autorizzate.
- Qual è il modo migliore per gestire questo?
- È possibile configurare OWIN sul lato client per utilizzare le impostazioni OAuth del server? Sto abbaiando dall'albero sbagliato e dovrò semplicemente usare HTTPClients?
- Posso deserializzare il token al portatore e memorizzarlo in sessione e quindi scrivere i miei provider di autorizzazione per controllarli dal lato client?
Le mie preoccupazioni iniziali sono che sto abusando di token bearer e cercando di trasformarli in una soluzione che non è l'ideale. Tutti gli esempi di autorizzazione esterna che ho trovato finora implicano solitamente effettuare chiamate a provider ospitati da Google/Facebook/Twitter per verificare che l'utente sia chi dicono di essere e quindi passare alla creazione di un record utente nel proprio sistema. La mia domanda non può farlo.
Per quanto riguarda la sicurezza, stavo progettando di introdurre i filtri che avrebbero convalidato la richiesta proveniente dall'applicazione client fornendo un identificatore e un segreto, insieme alla convalida IP.
Mi rendo conto che potrebbe essere un po 'aperto, ma gradirei qualsiasi consiglio. Lo scopo del progetto è che il servizio Web è la cosa solo per accedere al database. L'applicazione client MVC verrà ospitata su un server diverso e il servizio accetterà solo le richieste da tale applicazione client.
buona domanda .... –