Как добавить пользовательские разрешения из локальной базы данных в мой основной объект безопасности Spring? - PullRequest
0 голосов
/ 28 июня 2019

У меня проблемы с добавлением пользовательских разрешений из нашей локальной базы данных в мой объект Spring Security Principal.

Мои цели для нашей безопасности состоят в следующем:

  1. Аутентификация с помощью OAuth2 от нашей компании (выполнено)
  2. Запрос нашей локальной базы данных и сбор разрешений пользователей (запрос написан)
  3. Добавить этот список разрешений для моего основного объекта для использования в приложении

Я бы предпочел, чтобы это было сделано правильно, когда пользователь входит в систему с помощью команды configure() в конфигурации Spring Security.

Проще говоря, я хочу сказать: «Эй, теперь, когда пользователь вошел в систему, возьмите это имя пользователя и вставьте его в этот запрос. Возьмите результаты этого запроса и добавьте их в мой основной объект.поэтому я могу использовать его в любом месте приложения "

Вот моя очень простая конфигурация безопасности:

@Configuration
@EnableOAuth2Sso
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http)
            throws Exception {

        http.antMatcher("/**")
                .authorizeRequests()
                .anyRequest()
                .authenticated();
    }

}

Вот пример с моего контроллера по сбору информации о сборе информации о пользователях из моего основного объекта:


@RestController
@RequestMapping("user")
@Slf4j
public class UserController {

    @GetMapping(value = "/authentication")
    public Authentication getAuth(Principal principal){
        OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) principal;
        Authentication authentication = oAuth2Authentication.getUserAuthentication();
        Map<String, String> details = new LinkedHashMap<>();
        details = (Map<String, String>) authentication.getDetails();
        return authentication;
    }


}

Это прекрасно работает, поэтому у меня есть адрес электронной почты, имя, фамилия и т. Д., Которые моя компания предоставляет по их токену OAuth2.Мне просто нужно изменить этот основной объект, чтобы добавить разрешения ... прямо при входе пользователя в систему ...

Ожидаемые результаты:

У меня должен быть основной объект, который имеет всю пользовательскую информациюкак электронная почта, имя, фамилия, которые моя компания предоставляет от OAuth.Кроме того, у основного объекта должен быть список разрешений, которые мы собрали из пользовательского запроса к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...