Сочетание OAuth2 с http-аутентификацией для базовой аутентификации - PullRequest
1 голос
/ 24 сентября 2019

Я реализовал OAuth2, используя Spring Boot и Spring Security.Теперь у меня есть другой набор доступных API, и я хочу использовать разные методы аутентификации для него.Например, я хочу использовать OAuth2 для /users/** apis и Http Basic Authentication для /admin/** API.

Однако OAuth2 не должен работать для /admin/**, а HTTP basic не должен работать для /users/**API.

Любая помощь будет отличной!

1 Ответ

0 голосов
/ 25 сентября 2019

В Spring Security у вас может быть несколько цепочек фильтров, которые обрабатывают разные запросы.Таким образом, у вас может быть один, который обрабатывает запросы к / users / ** uri, который будет иметь фильтр базовой аутентификации, и тот, который обрабатывает запросы к / admin / ** uri, который будет иметь фильтры Oauth2.Чтобы настроить это, вам нужно 2 экземпляра WebSecurityConfigurerAdapter

Один для Oauth2

@Configuration
@Order(1)
public static class Oauth2ConfigurationAdapter extends WebSecurityConfigurerAdapter {

    protected void configure(HttpSecurity http) throws Exception {
       http.mvcMatcher("/user/**")
       ...... 

и другой для Basic:

@Configuration
@Order(2)
public static class BasicConfigurationAdapter extends WebSecurityConfigurerAdapter {

    protected void configure(HttpSecurity http) throws Exception {
       http.mvcMatcher("/admin/**")
       ...... 

В этой статье это объясняется более подробнодеталь: https://www.baeldung.com/spring-security-multiple-entry-points

Также этот код делает нечто похожее с Digest auth для / admin и Basic для всех остальных.https://github.com/wlesniak/spring-security-authn-authz-course/tree/master/module_2/mod2_crypto_portfolio_digest

...