Versão simples de aem saml demo disponível em http://helpx.adobe.com/br/experience-manager/kb/simple-saml-demo.html
Objetivo
O AEM fornece suporte para a solicitação de autenticação do SAML 2.0 e atua como um provedor de serviços SAML. Este artigo fornece uma amostra para instalar e configurar seus testes locais para obter o Logon único da web dentro dos limites da organização.
Consulte também a documentação on-line do produto para o Manipulador de Autenticação SAML.
Software utilizado para a configuração
Os binários usados são mencionados abaixo. Você poderá usar o mesmo ou um equivalente.
Software | Versão | Baixado de |
Shibboleth IDP | 2.4.0 | http://shibboleth.net/downloads/identity-provider/latest/ |
Tomcat (servidor de aplicativos para IDP) | apache-tomcat-6.0.37 | http://tomcat.apache.org/download-60.cgi |
OpenDS (servidor LDAP) | OpenDS-2.2.1 | https://opends.java.net/public/downloads_index.html |
JDK 1.6.0_26 | ||
AEM 5.6 |
Instalação e configuração
Instalar e configurar o LDAP do OpenDS
Siga as instruções de instalação do OpenDS. Durante a instalação, opte por carregar os dados de teste para evitar a criação de usuário. Não esqueça de fornecer a senha de administrador durante a instalação. A captura de tela abaixo mostra a opção selecionada durante a instalação.
Durante a integração com o AEM, usei a propriedade de categoria de negócios do LDAP para identificar o grupo ao qual o usuário pertence.
Instalar o Shibboleth IDP
Descompacte o binário baixado (shibboleth-identityprovider-2.4.0-bin.zip) e execute o arquivo install.bat. A instalação cria o ID da entidade do IdP, os metadados iniciais, um conjunto básico de arquivos de configuração do IdP e um par de chaves de certificado autoassinado usado para assinatura/criptografia.
Instalar e configurar o Tomcat
1. Descompacte apache-tomcat-6.0.37-windows-x64.zip em qualquer diretório (por exemplo, C:\demo\appserver\apache-tomcat-6.0.37-windows-x64).
2. Crie um certificado SSL autoassinado.
3. Aplique o certificado ao tomcat <TOMCAT_HOME>/conf/server.xml.
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" SSLEngine="on" SSLCertificateFile="C:/demo/appserver/apache-tomcat-6.0.37-windows-x64/apache-tomcat-6.0.37/cert/tomcatcert.pem" SSLCertificateKeyFile="C:/demo/appserver/apache-tomcat-6.0.37-windows-x64/apache-tomcat-6.0.37/cert/tomcatkey.pem" SSLPassword="password" />
4. Copie "idp.war" de <SAML_IDP_HOME>/war/idp.war para <TOMCAT_HOME>/webapps
5. Crie o diretório <TOMCAT_HOME>/endorsed e copie os arquivos .jar incluídos no diretório endossado por fonte do IdP para o diretório recém-criado.
6. Teste rápido: o acesso ao https://localhost:8443/idp/profile/Status retorna bem.
Configurar o Shibboleth IDP
1. Modifique <SAML_IDP_HOME>/conf/idp-metadata.xml para garantir que todos os atributos de localização apontem para o aplicativo idp no tomcat 8443
2. Modifique <SAML_IDP_HOME> /conf/attribute-resolver.xml para incluir a definição de atributo e cadeia de conexão LDAP
3. Modifique <SAML_IDP_HOME> /conf/handler.xml para remover todas as entradas para autenticação, exceto "UsernamePassword" e "PreviousSession."
4. Modificar <SAML_IDP_HOME> /conf/logging.xml para rastreio de depuração de detalhes.
5. Modifique <SAML_IDP_HOME>/conf/login.config.
6. Modifique <SAML_IDP_HOME>/conf/relying-party.xml
7. Modifique /conf/attribute-filter.xml para liberar o atributo UID e grupo.
8. Adicione o seguinte arquivo de metadados em <SAML_IDP_HOME>/metadata/adobecq.xml.
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://www.blogsaml.com"> <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol"> <md:KeyDescriptor> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SPInfo"> <ds:X509Data> <ds:X509Certificate> MIIEdzCCA1+gAwIBAgIJAPswGGW+b631MA0GCSqGSIb3DQEBBQUAMIGDMQswCQYD VQQGEwJVUzELMAkGA1UECBMCTUExDjAMBgNVBAcTBUFjdG9uMQ4wDAYDVQQKEwVB ZG9iZTESMBAGA1UECxMJTWFya2V0aW5nMQ8wDQYDVQQDEwZIYXNzYW4xIjAgBgkq hkiG9w0BCQEWE3NhbXBsZUBibG9nc2FtbC5jb20wHhcNMTQwNTIzMTkzODI1WhcN MTcwNTIyMTkzODI1WjCBgzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYD VQQHEwVBY3RvbjEOMAwGA1UEChMFQWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEP MA0GA1UEAxMGSGFzc2FuMSIwIAYJKoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwu Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsW8NAHsIvl4EdEu0 0eZHuSYOAFLDZa0EQzf5+QDE179uHkqFIYpgdSJO3qj3HNKqlU/vnZNhQBJ2tRrc BjI7pWQO/G9f+7pQKke9QVU88IDnmmGknlCTiaKLv4p68XHR4AeTI2tfulYpURa+ V5onIxXoyXqubrSxTb0zWVZy9iZmpPA2gCkH3Yzi/TM+yxz5A7q/Vh4pYm3+xqQS gb1h5CFpA3YWlfSw2ONvNKlx9vJjfC+UCFxzNzbEF7f5u/c2zdKs72b70W8CnwTg ny+C0qEDLKNYStVag8AUau9SmyXoKSShvHfZOGNW0ad1n44dD9TLCTKTpG1DloWI yugtzwIDAQABo4HrMIHoMB0GA1UdDgQWBBT6Ve57XbEy+G+EzQTE+o8rzEiimzCB uAYDVR0jBIGwMIGtgBT6Ve57XbEy+G+EzQTE+o8rzEiim6GBiaSBhjCBgzELMAkG A1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYDVQQHEwVBY3RvbjEOMAwGA1UEChMF QWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEPMA0GA1UEAxMGSGFzc2FuMSIwIAYJ KoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwuY29tggkA+zAYZb5vrfUwDAYDVR0T BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEATJi8KCGnNM6lVX8x+GBhm3q0VdF+ VIAvYXJ4TqP3DGSUFr2ETt187cQ3ZtJsU+U5mQ8NX6DRJ7QVZjKPe/6vRltVlsvR z+b8vjXlWVWo6Zjcd96MQibESEutzLlwfQBq3A3azzqUmtEpA2woXzhV5XXvAsqt HsPYgcM9mZNO+FS3pDkOEdfyQuG4nUa0s2jx/gIYtqcMJqTK5d3c1nAaUhLEVuYr Upm6t+eL0/Yw4hrTjP3kEQO6g5ABsv9ew7iPs7G1RMm5BJErHyAHvgAeP/NZD/H6 C4fnnHXKhR7wbpxu9VipDIXQBmblPSvWGak+KhsPiQucvOvf2ksVtxoyLQ== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:6502/saml_login" index="1"/> </md:SPSSODescriptor> </md:EntityDescriptor>
Configure o AEM
1. Instale o AEM seguindo http://dev.day.com/docs/en/cq/current/deploying/installing_cq.html.
2. Em /etc/key no repositório, crie um nó chamado "saml". Dentro desse nó, adicione uma nova propriedade binária chamada "idp_cert" para o certificado público do IdP. Ou seja, faça o upload do arquivo a partir de <SAML_IDP_HOME>/credentials/idp.crt.
3. Configure o Manipulador de Autenticação.
4. Configure o ReferrerFilter.
Verificação
1. A realização de uma solicitação para o AEM em http://<host>:<port>/ redireciona para a página de logon do IDP.
2. Fazer logon como user.2 com senha como "senha" leva você para a página inicial do AEM. Veja o instantâneo da resposta do rastreador saml e da criação automática de usuários do crx abaixo:
Aprimoramento com o AEM6+
O AEM6 Sp1 em diante tem suporte adicional para
- capacidade de fluxo de desconexão única (Logout)
- Sincronizar Atributos
- Grupo padrão configurável
A seção abaixo fornece a atualização necessária na demonstração de configuração acima para testes locais de logout e sincronização do atributo email.
Atualizações de configuração no Shibboleth IDP
1. Modifique <SAML_IDP_HOME>/conf/attribute-filter.xml & <SAML_IDP_HOME>/conf/attribute-resolver.xml para liberar o atributo de email
2. Modifique o arquivo de metadados em <SAML_IDP_HOME>/metadata/adobecq.xml para incluir SingleSignoutService
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://www.blogsaml.com"> <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol"> <md:KeyDescriptor> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SPInfo"> <ds:X509Data> <ds:X509Certificate> MIIEdzCCA1+gAwIBAgIJAPswGGW+b631MA0GCSqGSIb3DQEBBQUAMIGDMQswCQYD VQQGEwJVUzELMAkGA1UECBMCTUExDjAMBgNVBAcTBUFjdG9uMQ4wDAYDVQQKEwVB ZG9iZTESMBAGA1UECxMJTWFya2V0aW5nMQ8wDQYDVQQDEwZIYXNzYW4xIjAgBgkq hkiG9w0BCQEWE3NhbXBsZUBibG9nc2FtbC5jb20wHhcNMTQwNTIzMTkzODI1WhcN MTcwNTIyMTkzODI1WjCBgzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYD VQQHEwVBY3RvbjEOMAwGA1UEChMFQWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEP MA0GA1UEAxMGSGFzc2FuMSIwIAYJKoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwu Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsW8NAHsIvl4EdEu0 0eZHuSYOAFLDZa0EQzf5+QDE179uHkqFIYpgdSJO3qj3HNKqlU/vnZNhQBJ2tRrc BjI7pWQO/G9f+7pQKke9QVU88IDnmmGknlCTiaKLv4p68XHR4AeTI2tfulYpURa+ V5onIxXoyXqubrSxTb0zWVZy9iZmpPA2gCkH3Yzi/TM+yxz5A7q/Vh4pYm3+xqQS gb1h5CFpA3YWlfSw2ONvNKlx9vJjfC+UCFxzNzbEF7f5u/c2zdKs72b70W8CnwTg ny+C0qEDLKNYStVag8AUau9SmyXoKSShvHfZOGNW0ad1n44dD9TLCTKTpG1DloWI yugtzwIDAQABo4HrMIHoMB0GA1UdDgQWBBT6Ve57XbEy+G+EzQTE+o8rzEiimzCB uAYDVR0jBIGwMIGtgBT6Ve57XbEy+G+EzQTE+o8rzEiim6GBiaSBhjCBgzELMAkG A1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYDVQQHEwVBY3RvbjEOMAwGA1UEChMF QWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEPMA0GA1UEAxMGSGFzc2FuMSIwIAYJ KoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwuY29tggkA+zAYZb5vrfUwDAYDVR0T BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEATJi8KCGnNM6lVX8x+GBhm3q0VdF+ VIAvYXJ4TqP3DGSUFr2ETt187cQ3ZtJsU+U5mQ8NX6DRJ7QVZjKPe/6vRltVlsvR z+b8vjXlWVWo6Zjcd96MQibESEutzLlwfQBq3A3azzqUmtEpA2woXzhV5XXvAsqt HsPYgcM9mZNO+FS3pDkOEdfyQuG4nUa0s2jx/gIYtqcMJqTK5d3c1nAaUhLEVuYr Upm6t+eL0/Yw4hrTjP3kEQO6g5ABsv9ew7iPs7G1RMm5BJErHyAHvgAeP/NZD/H6 C4fnnHXKhR7wbpxu9VipDIXQBmblPSvWGak+KhsPiQucvOvf2ksVtxoyLQ== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:6502/saml_login" index="1"/> <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.blogsaml.com:8443/idp/Authn/UserPassword"/> </md:SPSSODescriptor> </md:EntityDescriptor>
Atualizações de configuração no AEM
1. Em /etc/key/saml no repositório, inclua uma nova propriedade binária chamada "private" contendo a chave para o certificado público do arquivo de metadados (adobecq.xml). Ou seja, faça o upload do arquivo demoprivatekey.pem do pacote demo baixado.
2. Atualize o Manipulador de Autenticação com o url de logout e sincronize o atributo.
Verificação
1. Faça o logon no AEM em http://<port>:<port>/ usando user.0 e, em seguida, o logout deverá redirecionar para a página de login do IDP.
2. A propriedade de correio está sincronizada.
Limitações
O usuário deve existir no AEM
Os usuários que fizerem logon através do manipulador devem existir ou, se estiverem ausentes, deverão ser criados no AEM (“Autocreate CRX Users” deve estar verificado). Isso ocorre porque a estrutura de autenticação do Sling, da qual o SamlAuthenticationHandler faz parte, extrai as credenciais do usuário do SAMLResponse e efetua logon no repositório do JCR usando essas credenciais.
Acesso Anônimo em Todo o Site com Autenticação Opcional
O manipulador de autenticação é criado para proteger o conteúdo de acesso anônimo por meio da configuração de Caminho. Se for necessário que todas as páginas do site do AEM sejam acessadas anonimamente, mas também houver a necessidade da opção de autenticação, o valor da configuração do Caminho poderá ser definido como um caminho inexistente. Isso irá habilitar a autenticação SAML, mas também irá permitir acesso anônimo a todas as páginas do site. Se essa estratégia for usada, certifique-se de que o SAMLReponse publique no caminho saml_login correto (consulte o próximo item).
A configuração do Caminho e saml_login
O SAMLResponse do IdP deverá ser postado na página 'saml_login'. No entanto, a página 'saml_login' deverá estar dentro do caminho que o manipulador de autenticação protege (ou seja, a configuração do Caminho). Por exemplo, se a configuração do Caminho for ‘/‘, o IdP poderá publicar em http://localhost:4502/saml_login. Se o caminho for ‘/content/geometrixx’ o IdP poderá publicar em http://localhost:4502/content/geometrixx/saml_login ou http://localhost:4502/content/geometrixx/does-not-exist/saml_login, mas http://localhost:4502/content/saml_login não irá funcionar.
Login IdP Iniciado e RelayState
No SP1, a garantia de que um usuário retorne à página em que estava antes de efetuar logon é feita com o Cookie saml_request_path e não com o parâmetro RelayState típico encontrado na maioria das implementações de SSO. Portanto, embora a autenticação iniciada pelo IdP seja concluída com êxito, o usuário final não será enviado para a página especificada pelo RelayState. Conseqüentemente, se um link de login customizado for implementado em uma página do AEM (login iniciado pelo SP), certifique-se de configurar o Cookie saml_request_path antes de enviar o navegador para o IdP.
Erro Nenhum Recurso Encontrado
Isso provavelmente resulta de o usuário logado não ter as permissões apropriadas para visualizar a página. Para resolver esse problema, verifique se o usuário do SSO está recebendo permissões de leitura para pastas como /content. Isso é feito através da configuração do manipulador de autenticação para adicionar usuários de SSO a um grupo de usuários que tenha todas as permissões necessárias definidas.
Baixe
As credenciais de assinatura do IdP, as credenciais de criptografia, os arquivos de configuração e os metadados usados neste script de demonstração podem ser baixados a partir daqui.