Есть ли способ получить пользовательские данные, если аутентификация Keycloak выполняется на уровне Apache, а не интерфейсного приложения
Обычно существует как минимум 2 варианта защиты приложений с использованием стека Keycloak OpenID Connect:
- Используйте его в приложении, используя Keycloak
adapters
(в моем случае, это Javascript-интерфейс SPA) - Используйте его на Apache, используя
mod_auth_openidc
Если я решу использовать номер 2, как я могу получить данные пользователя (например, имя пользователя)?
------------------------ Редактировать из-за ответа @Cyril Dangerville -----------------
Хотя я понимаю общий подход, мой путь казался очень вынужденным.
Теперь, когда мой запрос прошел проверку подлинности, у меня есть файл cookie сеанса и заголовки токена доступа, но он не может получить доступ ни к одному заголовку из-за начальной загрузки страницы
Выполните вызов любого защищенного ресурса, чтобы получить значение заголовка доступа.
Используйте маркер доступа для вызова конечной точки userinfo (но это на другом домене, поэтому cookie не будет отправлен)
Можете ли вы помочь мне объяснить, где я должен идти сюда?
1 ответ
С помощью mod_auth_openidc пользовательские данные передаются в приложения в виде переменных среды Apache и / или заголовков HTTP. Последнее полезно, если вы используете Apache в качестве обратного прокси для удаленных приложений (mod_proxy). Случай с прокси кратко рассмотрен в FAQ проекта mod_auth_openidc.
Вы можете найти более подробную информацию о том, как настроить этот перевод утверждений токена OpenID Connect, включая данные аутентифицированного пользователя, в переменные / заголовки среды в файле конфигурации: auth_openidc.conf; два свойства в частности:
- Для переменной REMOTE_USER:
OIDCOAuthRemoteUserClaim <claim-name> [<regular-expression>]
- Для других:
OIDCPassClaimsAs [none|headers|environment|both]
,