Wiem, że zabezpieczenie REST API jest szeroko komentowanym tematem, ale nie jestem w stanie stworzyć małego prototypu spełniającego moje kryteria (i muszę potwierdzić, że te kryteria są realistyczne). Jest tak wiele opcji, jak zabezpieczyć zasoby i jak pracować z bezpieczeństwem Spring, muszę wyjaśnić, czy moje potrzeby są realistyczne.Jak zabezpieczyć API REST za pomocą Spring Boot i Spring Security?
Moje wymagania
- Reklamowe Authenticator oparte - użytkownicy zapewnią jego poświadczeń i uzyskać niepowtarzalny i czas ograniczony dostęp token. Chciałbym zarządzać tworzeniem tokenów, sprawdzaniem poprawności, wygaśnięciem we własnej implementacji.
- Niektóre zasoby reszta będzie publiczna - nie ma potrzeby uwierzytelniania w ogóle,
- Niektóre zasoby będą dostępne tylko dla użytkowników z prawami administratora,
- Inne zasób będzie dostępny po autoryzacji dla wszystkich użytkowników.
- Nie chcę używać uwierzytelniania podstawowego
- konfiguracja kod Java (nie XML)
Aktualny stan
Moja REST API działa bardzo dobrze, ale teraz muszę ją zabezpieczyć . Kiedy szukałem rozwiązania stworzyłem javax.servlet.Filter
filtr:
@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);
}
Ale to rozwiązanie z javax.servlet.filters
nie działa jak trzeba, ponieważ istnieje problem z obsługą wyjątków poprzez @ControllerAdvice
servlet dispatcher
z wiosną.
Co muszę
Chciałbym wiedzieć, czy kryteria te są realistyczne i uzyskać jakąkolwiek pomoc, jak rozpocząć zabezpieczanie REST API z wiosennym Security. Przeczytałem wiele samouczków (np. Spring Data REST + Spring Security), ale wszystkie działają w bardzo podstawowej konfiguracji - użytkownicy z ich referencjami są zapisani w pamięci w konfiguracji i muszę pracować z DBMS i utworzyć własny wystawca uwierzytelnienia.
Proszę dać mi kilka pomysłów, jak zacząć.
możesz mi pomóc w moim pytaniu proszę? https://stackoverflow.com/questions/46065063/spring-boot-basic-authentication –
Każdy przykładowy projekt, który zawiera wszystkie wymagania? –