Expose API в монолитном приложении Jhipster с базой OAUTH2 Безопасность - PullRequest
0 голосов
/ 06 июня 2018

Кто-нибудь может мне помочь?

Я создал монолитное приложение Jhipster, используя Security на основе Keycloak.Это брелок доступа к моему корпоративному ldap и все отлично работает.Когда кто-то хочет страницу, которую он перенаправляет на http://localhost:8080/login, и он перенаправляет на keycloak, чтобы петь, он возвращается к http://localhost:8080/login и получает токен пользователя входа в систему, поэтому пользователь может получить доступ к базе на своемправа пользователя роли.

Теперь мы хотим показать API сторонним компаниям, чтобы повторно использовать бизнес-логику моего приложения.(мы можем сделать это с помощью веб-сервисов, но мы хотим выставить наши успокоительные API).У них есть свои собственные приложения (настольные, веб-и т. Д.), И мы хотим показать наши API, чтобы они могли общаться с нами с помощью тех же политик безопасности.у них есть пользователи в нашем ldap.Кто-нибудь может сказать мне, какой лучший способ выставить его с разрешениями роли пользователя.

Одним из способов является то, что они могут отправить нам свою регистрационную информацию (пользователь, пароль).Мы знаем, что это не лучший способ, но мы не знаем, как сделать это по-другому.Кто-нибудь знает, как войти в систему с keycloak на основе этого входа пользователя.Мы включили прямое согласование, и мы можем получить токен доступа Keycloak с паролем потока.Но, если мы поступим таким образом, как мы можем преобразовать этот токен в объект OAuth2Authentication, чтобы мы могли сгенерировать JSESSIONID для выполнения вызовов API?

Мы отключили csrf, чтобы сделать это возможным.

Есть идеи?

Заранее спасибо

1 Ответ

0 голосов
/ 19 июня 2018

После нескольких дней исследований я нашел решение.

Вот код:

@ Конфигурация

@ EnableResourceServer

открытый класс ResourceServerConfigurationextends ResourceServerConfigurerAdapter {

@Bean("resourceServerRequestMatcher")
public RequestMatcher resources() {
    return new AntPathRequestMatcher("/external-access/**");
}

@Override
public void configure(final HttpSecurity http) throws Exception {
    http
        .requestMatcher(resources()).authorizeRequests()
        .anyRequest().authenticated();

}

}

Таким образом, у меня есть и WebSecurity, основанный на Keycloak, и базовый ресурс Resource.Для этого решения API-интерфейс, который я хочу предоставить, имеет оба отображения / api / external-api, сначала для веб-навигации, а другое для прямого доступа.Чтобы получить доступ через второй способ, вы должны вызвать первый keycloak, чтобы получить токен, а затем получить доступ к / external-api с этим токеном.

Возможно, есть лучшее решение (учетные данные клиента), но мне нужен логин, чтобы повторно использовать мои конечные точки.

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