Ajustando Atributos CPF e Data de Nascimento para ICPEdu

Informe

Antes de iniciar qualquer ação deste roteiro primeiro verificar a versão do seu servidor Ubuntu.

Este roteiro so irá funcionar para aquelas instituições que já possuem a versão da VM IdP a partir da versão 20.04 do sistema operacional Ubuntu, com a versão 4.2.x do Shibboleth caso a sua instituição não esteja dentro deste requisito não realizar este operação e entrar em contato com o ServiceDesk da RNP, pois será necessário realizar a atualização do seu IdP.

Guia passo a passo para AD:

Antes de começar !

Como a microsoft AD não implementa por padrão os atributos "schaDateOfBirth" e o "brPersonCPF" eles não são mapeados, com isso será necessário o uso de atributos que estejam vagos em seu AD para que os mesmos sejam mapeados para o Shibboleth em seu IdP. Nesse procedimento foi usado os seguintes atributos employeeNumber e employeeType

Nesse roteiro usamos o atributo employeeNumber para valores da Data de Nascimento e o atributo employeeType para valores do CPF

O shibboleth IDP em sua versão 4.2.x veio com algumas alterações na configuração de atributos, configurações essas que vieram para melhorar a manutenção e customização do IDP pelos responsáveis do serviço. Nessa versão tivemos a inlcusão de um novo recurso dentro do diretório /conf agora dentro desse diretório encontramos o sub diretório /attributes.

Esse sub diretório /attributes agora fica responsável por conter arquivos de configuração .xml que tratam sobre as especificações dos atributos suportados pelo IDP. Dentro desse diretório você verá os arquivos dividídos pelos seus respectivos schemas.

Para essa adequação do CPF e Data de Nascimento foi usado atributos que já estão mapeados pelo IDP dentro do schema .../conf/attributes/inetOrgPerson.xml e também já são atributos presentes no Microsoft AD.

Optamos por usar os atributos employeeNumber e employeeType

Seguir as etapas abaixo:

Dentro do seu Microsoft AD você precisa abrir o Editor de Atributos dos usuários e procurar pelos atributos employeeNumber e employeeType, veja figura abaixo:

Faça o preenchimento desses atributos seguindo a orientação de usar valores para Data de Nascimento em employeeNumber, sempre no formato AAAAMMDD e os valores para o CPF em employeeType, sempre no formato inteiro sem pontos e hífen.

Uma vez os valores populados em seu AD podemos agora configurar o shibboleth para que ele leia esse valores e entregue como se fosse o sachDateOfBirth e o brPersonCPF, passo a passo logo abaixo:

Abrir e editar o arquivo "attribute-resolver.xml", caminho: /opt/shibboleth-idp/conf e procure pelas entradas com id=brPersonCPF e id=schacDateOfBirth eles estão perto um do outro.

    <!-- CAFe - brPersonCPF -->
    <AttributeDefinition id="brPersonCPF" xsi:type="Simple">
        <InputDataConnector ref="dcLDAP" attributeNames="brPersonCPF" />
    </AttributeDefinition>

    <!-- CAFe - schacDateOfBirth -->
    <AttributeDefinition id="schacDateOfBirth" xsi:type="Simple">
        <InputDataConnector ref="dcLDAP" attributeNames="schacDateOfBirth" />
    </AttributeDefinition>

Vamos nesse momento alterar os valores de referencia desses dois atributos, temos que alterar a entrada da variável attributeNames="brPersonCPF" e attributeName="schacDateOfBirth" para os seguintes valores:

attributeNames="employeeType"

attributeNames="employeeNumber"

    <!-- CAFe - brPersonCPF -->
    <AttributeDefinition id="brPersonCPF" xsi:type="Simple">
        <InputDataConnector ref="dcLDAP" attributeNames="employeeType" />
    </AttributeDefinition>

    <!-- CAFe - schacDateOfBirth -->
    <AttributeDefinition id="schacDateOfBirth" xsi:type="Simple">
        <InputDataConnector ref="dcLDAP" attributeNames="employeeNumber" />
    </AttributeDefinition>
    

Procurar no arquivo de configuração na secção de Data Connectors a entrada <dc:ReturnAttributes>...</dc:ReturnAttributes>, ela faz referência aos atributos que serão retornados pelo seu IdP, essa configuração ainda deve ser feita no arquivo attribute-resolver.xml.

    <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->

    <DataConnector id="dcLDAP" xsi:type="LDAPDirectory" ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}" baseDN="%{idp.attribute.resolver.LDAP.baseDN}" principal="%{idp.attribute.resolver.LDAP.bindDN}" principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}" trustFile="%{idp.attribute.resolver.LDAP.trustCertificates}" useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}" noResultIsError="%{idp.attribute.resolver.LDAP.noResultsIsError:false}" multipleResultsIsError="%{idp.attribute.resolver.LDAP.multipleResultsIsError:true}">
        <FilterTemplate>
            <![CDATA[
                %{idp.attribute.resolver.LDAP.searchFilter}
            ]]>
        </FilterTemplate>
        <ReturnAttributes>%{idp.authn.LDAP.returnAttributes} mail cn givenName sn brPersonCPF schacDateOfBirth</ReturnAttributes>
    </DataConnector>

Nessa parte do bloco você deve acrescentar os dois novos atributos na linha de entrega, veja como deve ficar após sua alteração:

<ReturnAttributes>%{idp.authn.LDAP.returnAttributes} mail cn givenName sn brPersonCPF schacDateOfBirth employeeType employeeNumber </ReturnAttributes>

Muito importante que você inclua os dois atributos referenciados pelo seu AD para serem usados como CPF e Data de Nascimento, dentro desta linha do código, pois é ela quem irá liberar esses atributos e entrega-los ao serviço.

Faça a modificação, caso necessário, adicione a regra para a libração dos atributos CPF e Data de Nascimento para o ICPedu, salve o arquivo e feche.

Faça o restart do serviço:

systemctl restart jetty9.service

Informe

A inclusão do bloco de código deve estar contida dentro das tags "<resolver:AttributeResolver" e "</resolver:AttributeResolver>" que são as declarações de inicio e fim do arquivo attribute-filter.xml.

No exemplo citado estamos liberando os atributos CPF e Data de Nascimento apenas para o SP de teste da RNP e para os SPs dos serviços P1 e Pessoal do ICPEDU. Lembrando que os atributos devem existir no serviço de diretório da institução em forma de atributo do usuário.

Last updated