So che proteggere l'API REST è un argomento ampiamente commentato, ma non sono in grado di creare un piccolo prototipo che soddisfi i miei criteri (e devo confermare che questi criteri sono realistici). Ci sono così tante opzioni su come proteggere le risorse e su come lavorare con la sicurezza di Spring, ho bisogno di chiarire se le mie esigenze sono realistiche.Come proteggere l'API REST con Spring Boot e Spring Security?
miei requisiti
- Token di autenticazione basato - gli utenti forniranno le sue credenziali e ottenere token univoco e tempo di accesso limitato. Vorrei gestire la creazione di token, verificarne la validità, la scadenza nella mia implementazione.
- Alcune risorse resto sarà pubblica - non c'è bisogno di autenticare a tutti,
- Alcune risorse saranno accessibili solo per gli utenti con diritti di amministratore,
- Other resource sarà accessibile dopo l'autorizzazione per tutti gli utenti.
- Non voglio utilizzare l'autenticazione di base
- configurazione codice Java (non XML)
Stato attuale
mio API REST funziona molto bene, ma ora ho bisogno di fissarlo . Quando ero alla ricerca di una soluzione che ho creato un filtro javax.servlet.Filter
:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String accessToken = request.getHeader(AUTHORIZATION_TOKEN);
Account account = accountDao.find(accessToken);
if (account == null) {
throw new UnauthorizedException();
}
chain.doFilter(req, res);
}
Ma questa soluzione con javax.servlet.filters
non funziona come ho bisogno perché c'è un problema con la gestione delle eccezioni tramite @ControllerAdvice
con la Primavera servlet dispatcher
.
Che cosa ho bisogno
Vorrei sapere se questi criteri sono realistici e ottenere alcun aiuto, come avviare il fissaggio REST API con Primavera di sicurezza. Ho letto molti tutorial (ad esempio Spring Data REST + Spring Security) ma tutti funzionano in configurazione di base: gli utenti con le loro credenziali sono archiviati nella memoria nella configurazione e ho bisogno di lavorare con DBMS e creare il proprio autenticatore.
Per favore dammi alcune idee su come iniziare.
può aiutarmi nella mia domanda per favore? https://stackoverflow.com/questions/46065063/spring-boot-basic-authentication –
Qualsiasi progetto di esempio che include tutti i requisiti? –