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 :
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
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.
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
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:
Você pode usar o SP da RNP → https://sp.rnp.br/ escolher a opção CAFe e validar a sua configuração tentando um acesso pelo seu IdP.
Last updated