Я играю с проектом, который имеет следующую конфигурацию:
- Keycloak в качестве сервера OIDC
- Play Framework с Pac4J в качестве библиотеки безопасности и Pac4J-Play в качестве интерфейса
- Мобильный клиент iOS с AppAuth в качестве адаптера OIDC
При работе с API через веб-интерфейс - все ок. Pac4J-Play проверяет сеанс воспроизведения на наличие активного профиля OIDC, если его там нет, пользователь будет перенаправлен на поток входа в OIDC, предоставленный Keycloak. Успешная аутентификация возвращает пользователя к веб-интерфейсу с сеансом Play, содержащим правильную информацию, так что все будущие вызовы API разрешены.
У меня проблема с организацией взаимодействия с мобильного клиента. AppAuth позволяет правильно получать токены доступа, обновления и идентификатора, но я не знаю, как интегрировать их с аутентификацией Pac4J. В настоящее время я играю с принятием токенов с мобильного телефона в отдельном вызове API и пытаюсь взломать Pac4J, чтобы обернуть их, как если бы они были получены через Pac4J. Тем не менее, это похоже на хак, и есть определенная практика, позволяющая правильно настроить этот web / mobile / API / OIDC так, чтобы я не следовал ему.
Еще один вопрос к той же проблеме - использовать ли мне отдельные клиенты Keycloak для API и мобильных авторизаций. Например. будет ли доступ к токену, полученному через «мобильный» клиент, настроенный в Keycloak, для вызовов, управляемых «веб-клиентом» Keycloak?
Спасибо