Установите Apache mod_auth_openidc в качестве сервера ресурсов с Keycloak

Я хочу настроить очень простую систему для предоставления авторизованного доступа к статическому каталогу через Apache2 и его модуль mod_auth_openidc, используя Keycloak в качестве сервера OAuth (OpenID Connect). Изучив всю документацию и статьи, которые я смог найти по этому вопросу, я пришел к следующей конфигурации.

<VirtualHost *:80>
    DocumentRoot /var/www/html

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    Redirect permanent '/' https://%{HTTP_HOST}
</VirtualHost>


<VirtualHost *:443>
    DocumentRoot /var/www/html

    ProxyPreserveHost On
    ProxyRequests Off
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
    ProxyPass /auth http://127.0.0.1/auth
    ProxyPassReverse /auth http://127.0.0.1/auth

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
                    SSLOptions +StdEnvVars
    </Directory>

    OIDCOAuthIntrospectionEndpoint https://127.0.0.1/auth/realms/Localserv/protocol/openid-connect/token/introspect
    OIDCOAuthIntrospectionEndpointParams token_type_hint=access_token
    OIDCOAuthClientID Apache
    OIDCOAuthClientSecret 8947ff67-4a8d-4391-81cf-9b6c168e189d
    OIDCProviderMetadataURL https://127.0.0.1/auth/realms/Localserv/.well-known/openid-configuration
    OIDCRedirectURI https://www.example.com/example/redirect_uri
    OIDCCryptoPassphrase random1234

    <Location /secret/>
        AuthType oauth20
        Require claim iss:https://127.0.0.1/auth/Localserv/master
    </Location>

</VirtualHost>

Еще несколько фактов о моей настройке:

  • Я использую сервер Keycloak на той же машине, используя Apache в качестве обратного прокси-сервера. Вы можете увидеть это и из приведенного выше файла конфигурации.

  • Кроме того, я хочу обслуживать простые простые статические файлы, у меня нет ни одного клиентского приложения, которое могло бы обрабатывать поток OAuth. Поэтому я хочу, чтобы поток на стороне клиента OAuth обрабатывался только mod_auth_openidc. Он должен перенаправить на страницу входа в систему, если неавторизованный пользователь пытается получить доступ, и затем при правильном входе в систему (аутентификация через OAuth-сервер Keycloak) должен предоставить доступ.

Теперь мои вопросы

  1. Нужно ли устанавливать OIDCRedirectURI Директива? И если я это сделаю, какой должна быть ценность?

  2. Какими должны быть общие настройки для моих требований. Я чувствую, что иду не в правильном направлении, поэтому любая помощь будет очень признательна.

0 ответов

Другие вопросы по тегам