2015-12-02 3 views
3

Я хочу интегрировать аутентификацию Keycloak в проект Play2. Вот что я сделал до этого момента:Интеграция Keycloak в проект Play2

  • я скачал Keycloak: keycloak-1.6.1.Final.zip, распаковал, запустить его и настроить путем создания тестового сервера и некоторые роли
  • я скачал, сконфигурирован и запустил пример js-console (https://github.com/keycloak/keycloak/tree/master/examples/js-console)
  • Мне удалось создать пользователя и войти в систему с помощью js-console. Пользователь показать в keycloak администратора, как и ожидалось
  • Теперь я хотел бы защитить мой бэкенд также, что является проект PLAY2 с Maven сборки (с использованием PLAY2-Maven-плагин: https://code.google.com/p/play2-maven-plugin/)
  • Бэкэнд публикует REST API, и эти вызовы должны быть доступны только для аутентифицированных пользователей, имеющих несколько ролей.

До этого момента мне не удалось найти решение для этого. Я наткнулся на Deadbolt, который может декларативно выражать ограничения, которые должны применяться к пользователям и ролям, но мне не удалось найти адаптер для keycloak для использования с Play2.

Есть ли кто-нибудь, кто сделал что-то подобное? Я предполагаю, что решение будет заключаться в создании пользовательского адаптера путем настройки и последующего вызова основных методов Keycloak.

Есть ли у кого-нибудь мысли о создании этого «автономного адаптера Keycloak»?

ответ

0

Это зависит от того, какой механизм аутентификации вы хотите использовать (openid-connect или SAML). Для приложения, над которым я работал, мы выбрали openid-connect. На данный момент единственной библиотекой play2, которая поддерживала протокол, была https://github.com/pac4j/play-pac4j. Трудная часть заключалась в выяснении того, как keycloak кодировал информацию в токене, который он отправил обратно на игровой сервер. Он делает это, используя кодировку Base64. Мы перевели алгоритм из keycloak-js-adapter, чтобы извлечь информацию о пользователе. После этого мы можем использовать Security trait или создать специальную оболочку запроса, которая будет содержать авторизированную информацию пользователя.