Splunk SAML SSO от IdP с Apache mod_mellon не работает

Я пытаюсь настроить SSO с IdP на Apache с mod_mellon и прокси-сервером mod на splunk.

Среда: Ubuntu 14.04; Apache 2.4.7; mod-auth-mellon 0.7.0.

Apache настроен с использованием сгенерированного mellon ключа / сертификата на ssl-сайте по умолчанию. mod proxy используется для прокси-сервера для локального splunk на порту 8000.

auth_mellon.conf :

MellonCacheSize 100
MellonLockFile "/var/lock/mod_auth_mellon.lock"
MellonPostDirectory "/var/cache/apache2/mod_auth_mellon/"

ProxyRequests Off
ProxyPass /secret/ !
ProxyPassInterpolateEnv On
<Location />
        MellonEnable "info"
        Require valid-user
        AuthType "Mellon"
        MellonVariable "cookie"
        MellonSamlResponseDump On
        MellonSPPrivateKeyFile /etc/apache2/mellon/urn_splunk.key
        MellonSPCertFile /etc/apache2/mellon/urn_splunk.cert
        MellonSPMetadataFile /etc/apache2/mellon/urn_splunk.xml
        MellonIdpMetadataFile /etc/apache2/mellon/idp-meta.xml
        MellonEndpointPath /secret/endpoint
        MellonUser "NAME_ID"
        MellonDefaultLoginPath /en-US/
        RequestHeader set SplunkWebUser %{MELLON_NAME_ID}e
        MellonSamlResponseDump On

        ProxyPass http://127.0.0.1:8000/
        ProxyPassReverse http://127.0.0.1:8000/
        ProxyPassInterpolateEnv On
</Location>

idp-meta.xml содержит метаданные от IDP (включая сертификат IDP x509 и HTTP Post / HTTP Redirect параметры). файлы urn_service. * генерируются из сценария mellon_create_metadata.sh , который создает сертификат x509 и ключ в конфигурационном файле SP и xml.

Когда я пытаюсь получить доступ к splunk из IdP, я вижу ошибки в файле журнала apache и получаю ответ 500 / внутренняя ошибка сервера:

[authz_core:debug] mod_authz_core.c(802): AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
[authz_core:debug] mod_authz_core.c(802): AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
[core:error] AH00027: No authentication done but request not allowed without authentication for /secret/endpoint/login. Authentication not configured?

Похоже, что аутентификация SAML не работает. Я следую этому руководству: http://blogs.splunk.com/2013/10/09/splunk-sso-using-saml-through-okta/

Splunk настроен для аутентификации с помощью LDAP и является аутентификация правильно. Нужно ли также настроить apache с аутентификацией ldap для идентификации допустимых пользователей? (не уверен, как пользователи проходят аутентификацию в apache / mellon, предполагается, что все это обрабатывается полезной нагрузкой от IdP, а mellon просто знает об идентичности

1
задан 30 November 2015 в 15:55
3 ответа

Похоже, что некоторые вещи были неправильными. Во-первых, я не осознавал, что метаданные необходимо скопировать из моего IdP обратно в конфигурации apache, когда я изменил настройки SAML на этой стороне. В любом случае, убедившись, что файлы IdP и SP xml правильно настроены в Apache, я смог продолжить работу (я думаю, что изменил идентификатор объекта)

Я все еще получал ошибку, требующую наличия действительного пользователя в ошибке журналы. Оказывается, MellonEnable "auth" заботится о том, чтобы убедиться, что есть действующий пользователь, в то время как по какой-то причине Требует параметров действительного пользователя и AuthType "Mellon" вызывали ошибки и 500 ответов сервера.

После удаления этих 2 директив я все еще получал ошибки, на этот раз Не удалось найти метаданные для IdP "(null)" - после быстрого поиска выяснилось, что последняя версия lasso , доступный в Ubuntu 14.04 LTS (2.4.0), не работает с подписями SHA256, которые по умолчанию использовались IdP. Lasso 2.5 поддерживает SHA256. После обновления конфигурации IdP с помощью совместимого алгоритма идентификация прошла правильно.

Однако затем я столкнулся с петлями перенаправления из-за контекста. Я нашел еще одно сообщение, в котором предлагалось переместить веб-корень splunk в контекст / splunk вместо корневого ( / ), и, обновив его, я теперь могу аутентифицироваться в Splunk через меллон от IdP. Вот соответствующие рабочие конфигурации:

MellonLockFile "/var/lock/mod_auth_mellon.lock"
MellonPostDirectory "/var/cache/apache2/mod_auth_mellon/"

ProxyRequests Off
ProxyPassInterpolateEnv On
# Move the proxy directives out of <location> and specify the context / mapping
ProxyPass /splunk http://127.0.0.1:8000/splunk
ProxyPassReverse /splunk http://127.0.0.1:8000/splunk

<Location />
        MellonEnable "info"
        MellonVariable "cookie"
        MellonSamlResponseDump On
        MellonSPPrivateKeyFile /etc/apache2/mellon/urn_splunkweb.key
        MellonSPCertFile /etc/apache2/mellon/urn_splunkweb.cert
        MellonSPMetadataFile /etc/apache2/mellon/urn_splunkweb.xml
        MellonIdpMetadataFile /etc/apache2/mellon/idp-metadata.xml
        MellonEndpointPath /secret/endpoint
        MellonUser "NAME_ID"
        MellonDefaultLoginPath /splunk/en-US/
        RequestHeader set SplunkWebUser %{MELLON_NAME_ID}e
        ProxyPassInterpolateEnv On
</Location>
<Location /splunk/>
        # Forces /splunk requests to be authenticated via the IdP.
        MellonEnable "auth"
</Location>

$ SPLUNK_HOME / etc / system / local / web.conf:

[settings]
trustedIP=127.0.0.1
remoteUser SplunkWebUser
SSOMode=permissive
root_endpoint = /splunk

И $ SPLUNK_HOME / etc / system / local / server.conf

[general]
trustedIP=127.0.0.1

Это, очевидно, для установки, в которой apache Сервер / mellon работает на том же хосте, что и splunk. В противном случае необходимо обновить web.conf (splunk) и auth_mellon.conf (apache) с удаленными IP-адресами. web.conf поддерживает список доверенных хостов, разделенных запятыми, тогда как server.conf не поддерживает и должен оставаться как localhost.

2
ответ дан 3 December 2019 в 18:37

Создайте веб-страницу отладки со следующим:

<?php
header('Content-Type: text/plain');

foreach($_SERVER as $key=>$value) {
  if(substr($key, 0, 7) == 'MELLON_') {
    echo($key . '=' . $value . "\r\n");
  }
}
?>

Можете ли вы проверить, находится ли идентификатор пользователя в атрибуте

  MellonUser "NAME_ID"

NAME_ID ? Мне это кажется подозрительным. Обычно это uid или аналогичный. На этапе тестирования вы можете изменить любой атрибут, который, как вы знаете, выпускает IdP (mail, cn ... что угодно), чтобы избежать проблемы 500.

1
ответ дан 3 December 2019 в 18:37

Скорее всего, IDP неправильно настроен с LDAP, и нет необходимости в дополнительной настройке для Mellon / Apache.

Если вы можете опубликовать дамп ответа SAML, это поможет в дальнейшей детализации проблема.

Пожалуйста, дайте мне знать, если вы хотите продолжить обсуждение.

Спасибо, Сэнди E- (скрыто)

0
ответ дан 3 December 2019 в 18:37

Теги

Похожие вопросы