Как использовать аутентификацию на основе ролей Java EE с oAuth? - PullRequest
0 голосов
/ 10 января 2019

У меня есть стороннее клиентское приложение (клиент REST), получающее oauth-токен с сервера управления API. Этот сервер полностью отвечает за управление токенами и использует внешний поставщик удостоверений. Этот поставщик удостоверений использует реляционную базу данных корпоративного Java-приложения, работающего на сервере приложений Glassfish. Это корпоративное приложение содержит все необходимые сущности JPA, EJB-компоненты бизнес-логики, веб-приложение на основе Vaadin и предоставляет дополнительный REST API в качестве «слоя перевода» по отношению к бизнес-логике. По аспекту бизнес-логики управление пользователями. Другими словами, корпоративное приложение отвечает за хранение и обновление учетных данных пользователя, используемых сервером управления API для назначения токенов. Каждый уровень в корпоративном приложении (EJB, REST API) защищен с помощью декларативной защиты на основе ролей (JAAS-область JAAS использует ту же базу данных, что и поставщик удостоверений).

Мой вопрос: Как создать ссылку между назначенным токеном и соответствующей комбинацией имени пользователя и пароля, используемой для первоначального назначения токена, чтобы сервер приложений мог использовать JAAS для определения ролей пользователей, необходимых для API REST, и бизнес-логики, развернутой на Glassfish? Другими словами, как можно «распространить» учетные данные, связанные с маркером доступа, на сервер приложений?

Дополнительный API REST между сервером управления API и бизнес-логикой может обойти распространение защиты на сервер приложений с помощью аннотаций @RunAs с действительной учетной записью пользователя. Очевидно, что это очень плохое решение, поскольку оно создает угрозу безопасности и удаляет всю информацию об учетной записи, вызывающей бизнес-логику (больше нет возможности аудита).

...