Ich weiß, dass das Sichern der REST-API ein häufig kommentiertes Thema ist, aber ich kann keinen kleinen Prototyp erstellen, der meinen Kriterien entspricht (und ich muss bestätigen, dass diese Kriterien realistisch sind). Es gibt so viele Möglichkeiten, Ressourcen zu sichern und mit Spring Security zu arbeiten, dass ich klären muss, ob meine Anforderungen realistisch sind.
Meine Anforderungen
- Token-basierter Authentifikator - Benutzer geben ihre Anmeldeinformationen ein und erhalten ein eindeutiges und zeitlich begrenztes Zugriffstoken. Ich möchte die Tokenerstellung verwalten, die Gültigkeit und den Ablauf in meiner eigenen Implementierung überprüfen.
- Einige REST-Ressourcen sind öffentlich - Sie müssen sich überhaupt nicht authentifizieren.
- Einige Ressourcen sind nur für Benutzer mit Administratorrechten zugänglich.
- Andere Ressourcen sind nach der Autorisierung für alle Benutzer verfügbar.
- Ich möchte die Standardauthentifizierung nicht verwenden
- Java-Code-Konfiguration (nicht XML)
Aktueller Status
Meine REST-API funktioniert sehr gut, aber jetzt muss ich sie sichern. Als ich nach einer Lösung suchte, habe ich einen javax.servlet.Filter
Filter erstellt:
@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);
}
Diese Lösung mit javax.servlet.filters
funktioniert jedoch nicht so, wie ich es brauche, da es ein Problem mit der Ausnahmebehandlung über @ControllerAdvice
Spring gibt servlet dispatcher
.
Was ich brauche
Ich würde gerne wissen, ob diese Kriterien realistisch sind und Hilfe erhalten, wie Sie mit der Sicherung der REST-API mit Spring Security beginnen können. Ich habe viele Tutorials gelesen (z. B. Spring Data REST + Spring Security ), aber alle funktionieren in einer sehr einfachen Konfiguration - Benutzer mit ihren Anmeldeinformationen werden in der Konfiguration im Speicher gespeichert, und ich muss mit DBMS arbeiten und einen eigenen Authentifikator erstellen.
Bitte geben Sie mir einige Ideen, wie ich anfangen soll.