Parece que várias coisas estavam erradas. Em primeiro lugar, não percebi que os metadados precisavam ser recopiados do meu IdP de volta para as configurações do apache quando modifiquei as configurações de SAML desse lado. De qualquer forma, depois de ter certeza que os arquivos xml do IdP e do SP foram configurados corretamente no Apache, eu pude seguir em frente (eu acho que mudei o ID da entidade)
Eu ainda estava recebendo um erro ao exigir um usuário válido nos registros de erros. Acontece que MellonEnable "auth"
cuida de garantir que haja um usuário válido, enquanto, por algum motivo, os parâmetros Require valid-user
e AuthType "Mellon"
estavam acionando erros e 500 respostas do servidor.
Depois de remover essas duas diretivas, eu ainda estava recebendo erros, desta vez Could not find metadata for the IdP "(null)"
- após uma pesquisa rápida, descobriu-se que a versão mais recente do lasso
disponível no Ubuntu 14.04 LTS (2.4.0) não funciona as assinaturas SHA256 às quais o IdP foi padronizado. Suporte 2.5 de Lasso SHA256. Depois de atualizar a configuração do IdP com um algoritmo compatível, a identificação estava ocorrendo corretamente.
No entanto, fui confrontado com loops de redirecionamento devido ao contexto. Eu encontrei outro post que sugeriu mover a raiz da web do splunk para um contexto /splunk
em vez de na raiz ( /
), e atualizando isso, agora sou capaz de autenticar no Splunk via mellon a partir do IdP. Aqui estão as configurações de trabalho relevantes:
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
E $ SPLUNK_HOME / etc / system / local / server.conf
[general]
trustedIP=127.0.0.1
Isso é obviamente para uma configuração em que o servidor apache / mellon é executado no mesmo host que o splunk. web.conf
(splunk) e auth_mellon.conf
(apache) precisam ser atualizados com IPs remotos, se não. web.conf
suporta uma lista separada por vírgulas de hosts confiáveis, enquanto server.conf
não e deve permanecer como host local.