CAFe
  • CAFe
  • Central de Ajuda - CAFe
  • Políticas do Serviço
    • Termo de privacidade do Provedor de Serviço (SP)
    • CAFe Service Provider (SP) Privacy Agreement
    • Política da Comunidade Acadêmica Federada (CAFe)
    • Politics of Federated Academic Community (CAFe)
  • Aviso - Vulnerabilidade Shibboleth SP
  • Verificação de Inicidentes
  • Lista de Clientes
  • Atributos da CAFe
  • Perguntas Frequentes
    • FAQ - CAFe
    • FAQ - Pentaho
  • Pentaho
    • Pentaho
    • Procedimentos de Instalação
      • Procedimento de importação do template de Máquina Virtual (PDI 9.0)
      • Instalação Cliente PDI - Versão 9
      • Configuração do EID-PDI
        • Apresentação da Arquitetura do EID-PDI
        • Vídeo de configuração do EID-PDI
        • Descrição do modelo de dados EID
        • Descrição dos Jobs e Transformações disponíveis no PDI/EID
        • Descrição dos parâmetros do EID/PDI 9.0
        • Logs EID PDI
      • Controle de versão Pentaho Data Integration
      • Pentaho Módulo Web
        • Relatórios Pentaho
        • Agendamento de Jobs
      • Instalação do Apache DS - Windows
      • Tutorial Básico Apache DS
      • Procedimentos de criação da VM EID PDI
  • OpenLDAP
    • Instalação do OpenLDAP com esquema brEduPerson no Ubuntu 22.04
    • Habilitando o campo do sambaNTPassword
  • IDP CAFe
    • Requisitos de Uso
    • Manual de Usuário
      • Problemas no acesso CAFe
      • Coleta/Verificação de Atributos
        • Chimarrão (Homologação)
        • CAFe (Produção)
    • Procedimentos Técnicos
      • Como alterar o atributo principal de autenticação em seu IDP
      • Gerar nova chave e certificado para o shibboleth
      • Gerar nova chave e certificado para o Apache (auto assinado)
      • Instalando um certificado web válido em um IdP
      • Critérios de consulta ao OpenLDAP para Shibboleth
      • Altera nível do log do IDP para DEBUG
      • Ajustando Atributos CPF e Data de Nascimento para ICPEdu
      • Alterando o hostname e dominio de um IdP em produção na CAFe
      • Desabilitando o serviço Fail2ban do IdP CAFe
      • Instalando certificado Let's Encrypt no IDP Shibboleth
      • Customização da mensagens de login no IDP
      • Integrando o Office 365 com Shibboleth IDP
        • Office 365 - Configuração no Shibbboleth IDP
        • Office 365 - Configuração no Microsoft Entra
      • Instalação Manual do MFA CAFe
        • Requisitos de instalação do MFA
        • Procedimento de instalação
        • Configurações importantes - CAPTCHA
        • Ambiente com Redundância
        • Operando MFA
      • Alta Disponibilidade do Serviço
  • RPilot (IDP)
    • Instalação IDP RPilot
      • Escolhendo o Produto
      • Execução da Receita
        • Solicitar Execução
        • Parâmetros de uma receita
        • Revisão das Variáveis
        • Solicitações de Execuções
      • Homologar a instalação do IDP
      • Homologar a instalação do MFA
      • Customização da logo Institucional
    • Sobre o MFA CAFe
      • Senhas descartáveis MFA
      • Códigos de Emergência MFA
  • Service Provider (SP)
    • Guia de Instalação Shibboleth SP (3.4)
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. IDP CAFe
  2. Procedimentos Técnicos

Critérios de consulta ao OpenLDAP para Shibboleth

Esse roteiro visa ajudar na configuração do seu IdP para que os acessos federados sejam realizados com mais um critério a ser atendido no momento do login. As configurações serão realizadas no arquivo ldap.properties, esse arquivo contêm toda a informação de conexão do seu IdP com sua base de diretório OpenLDAP.

Importante !

Antes de começar é recomendado que seja feito o backup do arquivo "ldap.properties" em seu IdP. O arquivo fica no caminho: /opt/shibboleth-idp/conf

Considerar em todo texto abaixo que, OpenLDAP é a referência usada para identificar a base de diretório usada para a consulta do Shibboleth em seu IdP. Toda essa configuração foi homologada em um ambiente com os seguintes requisitos: Idp → Ubuntu 20.04, Shibboleth 4.2.1, Apache2 e Jetty9

Esse procedimento tem como requisito a criação do grupo, que deseja usar, no seu LDAP. Antes de começar crie seu grupo em sua base OpenLDAP.

Esse roteiro não irá esclarecer a forma como deve ser feita a criação de grupos em seu OpenLDAP ou AD.

Guia passo a passo

Faremos abaixo as etapas de configuração do arquivo "ldap.properties" para que as contas em seu OpenLDAP atendam um critério maior na consulta pelo Shibboleth em seu IdP:

Vamos abrir o arquivo "ldap.properties" dos seu IdP, use um editor de sua preferência, é recomendado o uso do VI ou VIM. O caminho é /opt/shibboleth-idp/conf :

# LDAP authentication configuration, see authn/ldap-authn-config.xml
## Authenticator strategy, either anonSearchAuthenticator, bindSearchAuthenticator, directAuthenticator, adAuthenticator
#idp.authn.LDAP.authenticator = anonSearchAuthenticator
idp.authn.LDAP.authenticator = bindSearchAuthenticator
## Connection properties ##
idp.authn.LDAP.ldapURL = ldaps://Openldap.homolog.rnp:636
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.useSSL = false
idp.authn.LDAP.connectTimeout = 3000
## SSL configuration, either jvmTrust, certificateTrust, or keyStoreTrust
idp.authn.LDAP.sslConfig = certificateTrust
## If using certificateTrust above, set to the trusted certificate's path
idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt
## If using keyStoreTrust above, set to the truststore path
idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore
## Return attributes during authentication
## NOTE: this is not used during attribute resolution; configure that directly in the
## attribute-resolver.xml configuration via a DataConnector's <dc:ReturnAttributes> element
idp.authn.LDAP.returnAttributes = uid
## DN resolution properties ##
# Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
# for AD: CN=Users,DC=example,DC=org
idp.authn.LDAP.baseDN = ou=RNP,dc=homolog,dc=rnp
idp.authn.LDAP.subtreeSearch = true
idp.authn.LDAP.userFilter = (uid={user})
# bind search configuration
# for AD: idp.authn.LDAP.bindDN=adminuser@domain.com
idp.authn.LDAP.bindDN = uid=leitor-shib,ou=Admins,dc=homolog,dc=rnp
idp.authn.LDAP.bindDNCredential = XXXXXXXX
# Format DN resolution, used by directAuthenticator, adAuthenticator
# for AD use idp.authn.LDAP.dnFormat=%s@domain.com
idp.authn.LDAP.dnFormat = uid=%s,ou=RNP,dc=homolog,dc=rnp
# LDAP attribute configuration, see attribute-resolver.xml
idp.attribute.resolver.LDAP.ldapURL = %{idp.authn.LDAP.ldapURL}
idp.attribute.resolver.LDAP.baseDN = %{idp.authn.LDAP.baseDN}
idp.attribute.resolver.LDAP.bindDN = %{idp.authn.LDAP.bindDN}
idp.attribute.resolver.LDAP.bindDNCredential = %{idp.authn.LDAP.bindDNCredential}
idp.attribute.resolver.LDAP.useStartTLS = %{idp.authn.LDAP.useStartTLS:true}
idp.attribute.resolver.LDAP.trustCertificates = %{idp.authn.LDAP.trustCertificates}
idp.attribute.resolver.LDAP.searchFilter = (uid=$requestContext.principalName)
# LDAP pool configuration, used for both authn and DN resolution
#idp.pool.LDAP.minSize = 3
#idp.pool.LDAP.maxSize = 10
#idp.pool.LDAP.validateOnCheckout = false
#idp.pool.LDAP.validatePeriodically = true
#idp.pool.LDAP.validatePeriod = 300
#idp.pool.LDAP.prunePeriod = 300
#idp.pool.LDAP.idleTime = 600
#idp.pool.LDAP.blockWaitTime = 3000
#idp.pool.LDAP.failFastInitialize = false

Na imagem acima temos o arquivo "ldap.properties" no padrão do template, no exemplo acima a autenticação do IdP está ocorrendo pelo atributo "uid" configurado para OpenLDAP. Lembrando que cada insituição pode personalizar qual atributo deseja que seja usado para a autenticação, mas os recomendados são: uid, sAMAccountName e mail. O atributo sAMAccountName é usado na configuração com Active Directory(AD).

Agora iremos alterar o valor da variável usada pelo shibboleth (idp.authn.LDAP.userFilter), para executar o critério de consulta no OpenLDAP. Linha 25 do bloco de código abaixo

# LDAP authentication configuration, see authn/ldap-authn-config.xml
## Authenticator strategy, either anonSearchAuthenticator, bindSearchAuthenticator, directAuthenticator, adAuthenticator
#idp.authn.LDAP.authenticator = anonSearchAuthenticator
idp.authn.LDAP.authenticator = bindSearchAuthenticator
## Connection properties ##
idp.authn.LDAP.ldapURL = ldaps://Openldap.homolog.rnp:636
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.useSSL = false
idp.authn.LDAP.connectTimeout = 3000
## SSL configuration, either jvmTrust, certificateTrust, or keyStoreTrust
idp.authn.LDAP.sslConfig = certificateTrust
## If using certificateTrust above, set to the trusted certificate's path
idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt
## If using keyStoreTrust above, set to the truststore path
idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore
## Return attributes during authentication
## NOTE: this is not used during attribute resolution; configure that directly in the
## attribute-resolver.xml configuration via a DataConnector's <dc:ReturnAttributes> element
idp.authn.LDAP.returnAttributes = uid
## DN resolution properties ##
# Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
# for AD: CN=Users,DC=example,DC=org
idp.authn.LDAP.baseDN = ou=RNP,dc=homolog,dc=rnp
idp.authn.LDAP.subtreeSearch = true
idp.authn.LDAP.userFilter = (&(uid={user})(memberof=cn=GRP_SRV_CAFE,ou=GRUPOS,dc=homolog,dc=rnp))
# bind search configuration
# for AD: idp.authn.LDAP.bindDN=adminuser@domain.com
idp.authn.LDAP.bindDN = uid=leitor-shib,ou=Admins,dc=homolog,dc=rnp
idp.authn.LDAP.bindDNCredential = XXXXXXXX
# Format DN resolution, used by directAuthenticator, adAuthenticator
# for AD use idp.authn.LDAP.dnFormat=%s@domain.com
idp.authn.LDAP.dnFormat = uid=%s,ou=RNP,dc=homolog,dc=rnp
# LDAP attribute configuration, see attribute-resolver.xml
idp.attribute.resolver.LDAP.ldapURL = %{idp.authn.LDAP.ldapURL}
idp.attribute.resolver.LDAP.baseDN = %{idp.authn.LDAP.baseDN}
idp.attribute.resolver.LDAP.bindDN = %{idp.authn.LDAP.bindDN}
idp.attribute.resolver.LDAP.bindDNCredential = %{idp.authn.LDAP.bindDNCredential}
idp.attribute.resolver.LDAP.useStartTLS = %{idp.authn.LDAP.useStartTLS:true}
idp.attribute.resolver.LDAP.trustCertificates = %{idp.authn.LDAP.trustCertificates}
idp.attribute.resolver.LDAP.searchFilter = (uid=$requestContext.principalName)
# LDAP pool configuration, used for both authn and DN resolution
#idp.pool.LDAP.minSize = 3
#idp.pool.LDAP.maxSize = 10
#idp.pool.LDAP.validateOnCheckout = false
#idp.pool.LDAP.validatePeriodically = true
#idp.pool.LDAP.validatePeriod = 300
#idp.pool.LDAP.prunePeriod = 300
#idp.pool.LDAP.idleTime = 600
#idp.pool.LDAP.blockWaitTime = 3000
#idp.pool.LDAP.failFastInitialize = false

Na imagem acima fiz a alteração do valor na variável (idp.authn.LDAP.userFilter). Usei o operador lógico & para adicionar mais um critério de consulta na base e mantive a primeira regra e em seguida adicionei mais um regra para a validação da consulta, no exemplo usei o atributo memberof, esse atributo permite que o Shibboleth agora apenas consulte as contas que estiverem como membros deste grupo no OpenLDAP → (&(uid={user})(memberof=cn=GRP_SRV_CAFE,ou=GRUPOS,dc=homolog,dc=rnp)). O valor deste atributo precisa estar com o distinguished name DN do grupo criado que no meu caso foi cn=GRP_SRV_CAFE,ou=GRUPOS,dc=homolog,dc=rnp desta forma é possível estabelecer mais criteriosamente quais contas da sua base de diretórios tem permissão para usarem os serviços federados.

Existem outras possibilidades de serem criados tipos de critérios para uma autenticação, seguindo os passos anteriores eu abaixo darei mais um exemplo de como filtrar a autenticação do usuário, liberando apenas os que possuem uid e mail.

idp.authn.LDAP.userFilter = (&(uid={user})(mail=*@domínio))

Também podemos usar o operador lógico OU do xml ( | ). No próximo exemplo o Shibboleth irá autenticar aquelas contas que possuem o atributo UID ou o mail

idp.authn.LDAP.userFilter = (|(uid={user})(mail={user}))

Ao final da configuração, você deve salvar as alterações no arquivo e então reiniciar o serviço do tomcat utilizando o seguinte comando:

systemctl restart jetty9.service
PreviousInstalando um certificado web válido em um IdPNextAltera nível do log do IDP para DEBUG

Last updated 3 years ago

Was this helpful?

Você pode usar o SP da RNP → escolher a opção CAFe e validar a sua configuração tentando um acesso pelo seu IdP.

https://sp.rnp.br/