Observação:

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.

Ldap Consolidated

Observaçã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.  

User Manage

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.

Idp Installation

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.

Tomcat Key

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

Location

2.  Modifique <SAML_IDP_HOME> /conf/attribute-resolver.xml para incluir a definição de atributo e cadeia de conexão LDAP

Attribute Resolver

3.  Modifique <SAML_IDP_HOME> /conf/handler.xml para remover todas as entradas para autenticação, exceto "UsernamePassword" e "PreviousSession."

Login

4.  Modificar <SAML_IDP_HOME> /conf/logging.xml para rastreio de depuração de detalhes.

IDP Debugging

5.  Modifique <SAML_IDP_HOME>/conf/login.config.

Ldap Config

6.  Modifique <SAML_IDP_HOME>/conf/relying-party.xml

RelayingParty

7.  Modifique /conf/attribute-filter.xml para liberar o atributo UID e grupo.  

Attribute-Filter

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.

SAMLKey

3.  Configure o Manipulador de Autenticação.

AEM

4.  Configure o ReferrerFilter.

ReffererFilter

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.

Login_home

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:

SAMLResponse
User Created at crx

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

Release_mail

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.

Private

2.  Atualize o Manipulador de Autenticação com o url de logout e sincronize o atributo.

Logout

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.

Mail

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.

Esta obra está licenciada sob uma licença não adaptada da Creative Commons Attribution-Noncommercial-Share Alike 3.0  As publicações do Twitter™ e do Facebook não são cobertas pelos termos do Creative Commons.

Avisos legais   |   Política de privacidade online