Perfis de Confiabilidade RCTS V1

Perfis de Confiabilidade RCTS V1


Esta página reflete informação da versão REFEDS Assurance Framework (RAF) v1.0 e mantém-se disponível, por motivos de histórico e para instituições com processos de conformidade já registados contra esta versão.

Os perfis de Confiabilidade RCTSaai tem como objetivo definir um conjunto de regras que permite validar e afirmar a qualidade da identidade digital dos utilizadores da Federação de Identidade Digital RCTS.

Estes perfis estão organizados por vários componentes que se encontram divididos da seguinte forma:

  • Identificadores: define os requisitos inerentes ao processo de atribuição de um identificador único e permanente que representa uma pessoa física.

  • Verificação de Identidade e Gestão de Credenciais: define os requisitos inerentes ao processo de identificação, credenciação dos indivíduos, atribuição de credenciais e respetiva renovação e substituição realizado por uma organização.

  • Qualidade dos Atributos: define os requisitos relativos ao processo de atribuição de determinados níveis de qualidade e atualização dos atributos transmitidos pela organização.

Os componentes que definem a robustez do processo de autenticação são baseados no REFEDS Single Factor Authentication Profile [REFEDS-SFA], no REFEDS Multi-Factor Authentication Profile [REFEDS-MFA] e no documento de diretrizes para a identidade digital Authentication and Lifecycle Management NIST [NIST 800-63B].

Perfil RCTS-P0


O Perfil de Confiabilidade RCTSaai-P0 significa o seguinte:

  • Individuo é afiliado a um membro da Federação de Identidade RCTS;
  • O individuo é uma pessoa física e não um robot ou uma peça de software;
  • O individuo tem um identificador único e permanente;
  • Os atributos/Informações divulgadas pode ser auto-asserções; e
  • O sistema de gestão de identidade do membro cumpre os requisitos RCTS-P0.

Link do Perfil de Confiabiliade RCTS-P0

Processo de Verificação da Conformidade

  • Provas de conformidade com este perfil são obrigatóriamente parte da Declaração de Práticas de Gestão de Identidade v2, mantidas como parte do processo de integração na Federação de Identidade RCTS. A Declaração de Práticas de Gestão de Identidade, deve descrever como a instituição cumpre as partes normativas deste perfil.

  • A instituição declara conformidade com este perfil de confiabilidade por meio de autoauditoria. A declaração de conformidade é submetida à equipa de operação da Federação em conjunto com a Declaração de Práticas de Gestão de Identidade.

Mais detalhe na secção 5. Conformidade e Verificação do Perfil RCTS-P0

Perfil RCTS - P1


O Perfil de Confiabilidade RCTS-P1 significa o seguinte:

  • O perfil é uma extensão do RCTS-P0;
  • O individuo é afiliado a um membro da Federação de Identidade RCTS;
  • A organização membro identificou/verificou o individuo;
  • O individuo tem um identificador único e permanente;
  • Atributos/Informações associadas à conta do utilizador são da responsabilidade da organização Membro.

Link do Perfil de Confiabiliade RCTS-P1

Processo de Verificação da Conformidade

  • Provas de conformidade com este perfil são obrigatóriamente parte da Declaração de Práticas de Gestão de Identidade v2, mantidas como parte do processo de integração na Federação de Identidade RCTS. A Declaração de Práticas de Gestão de Identidade, deve descrever como a instituição cumpre as partes normativas deste perfil.
  • A equipa de Operação da Federação ou outra parte aprovada pela equipa de Gestão da Federação realiza uma auditoria com base na Declaração de Práticas de Gestão de Identidade enviada.

Documentos para a avaliação do perfil RCTS-P1:

Mais detalhe na secção 5. Conformidade e Verificação do Perfil RCTS-P1

Perfil RCTS - P2


O Perfil de Confiabilidade RCTS-P2 significa o seguinte:

  • O perfil é uma extensão do RCTS-P1;
  • O individuo é afiliado a um membro da Federação de Identidade RCTS;
  • A organização membro identificou e verificou o individuo;
  • O individuo tem um identificador único e permanente;
  • Os tributos/Informações associadas à conta do utilizador são da responsabilidade da organização Membro;
  • Autenticação Multifator é Obrigatória

Link do Perfil de Confiabiliade RCTS-P2

Processo de Verificação da Conformidade

  • Provas de conformidade com este perfil são obrigatóriamente parte da Declaração de Práticas de Gestão de Identidade v2, mantidas como parte do processo de integração na Federação de Identidade RCTS. A Declaração de Práticas de Gestão de Identidade, deve descrever como a instituição cumpre as partes normativas deste perfil.
  • A equipa de Operação da Federação ou outra parte aprovada pela Equipa de Gestão da Federação realiza uma auditoria com base na Declaração de Práticas de Gestão de Identidade enviada. A auditoria inclui uma ou mais reuniões onde a equipa de Operação da Federação verifica que a instituição compreendeu os requisitos do perfil de confiabilidade sendo realizado um documento que reflete a avaliação realizada durante a auditoria.

Documentos para a avaliação do perfil RCTS-P2:

Mais detalhe na secção 5. Conformidade e Verificação do Perfil RCTS-P2

Perfil RCTS - P3


O Perfil de Confiabilidade RCTS-P3 significa o seguinte:

  • O perfil é uma extensão do RCTS-P2;
  • O individuo é afiliado a um membro da Federação de Identidade RCTS;
  • A organização membro identificou e confirmou o individuo;
  • O individuo tem um identificador único e permanente;
  • Atributos/Informações associadas à conta do utilizador são da responsabilidade da organização Membro;
  • Autenticação Multifator é Obrigatória

Link do Perfil de Confiabiliade RCTS-P3

Processo de Verificação da Conformidade

  • Provas de conformidade com este perfil são obrigatóriamente parte da Declaração de Práticas de Gestão de Identidade v2, mantidas como parte do processo de integração na Federação de Identidade RCTS. A Declaração de Práticas de Gestão de Identidade, deve descrever como a instituição cumpre as partes normativas deste perfil.
  • A equipa de Operação da Federação ou outra parte aprovada pela Equipa de Gestão da Federação realiza uma auditoria com base na Declaração de Práticas de Gestão de Identidade enviada. A auditoria inclui uma ou mais reuniões onde a equipa de Operação da Federação verifica que a instituição compreendeu os requisitos do perfil de confiabilidade sendo realizado um documento que reflete a avaliação realizada durante a auditoria.

Documentos para a avaliação do perfil RCTS-P3:

Mais detalhe na secção 5. Conformidade e Verificação do Perfil RCTS-P3

Representação dos Valores do Perfis

Todos os perfis de confiabilidade de identidade da Federação RCTS e os valores dos componentes de confiabilidade (Identificadores, Verificação de Identidade, Gestão de Credenciais e Qualidade dos Atributos) a eles associados, são expressos através do atributo SAML 2.0 [eduPerson] eduPersonAssurance ou por meio de uma declaração OIDC [REFEDS OIDCre] edu_person_assurance.

Perfil RCTS - P0

rctsaai-p0.png

Perfil RCTS - P1

rctsaai-p1.png

Perfil RCTS - P2

rctsaai-p2.png

Perfil RCTS - P3

rctsaai-p3.png

Analisar e Classificar Utilizadores

Uma instituição pode ter utilizadores com vários níveis de confiança. Por exemplo, se só os funcionários tem acesso à autenticação Multi-factor então neste caso, apenas este conjunto de utilizadores pode candidatar-se ao perfil RCTS-P02 ou RCTS-P03.

As instituições após a analise de cada um dos perfis de confiabilidade tem de identificar de acordo com os requisitos preenchidos pelos seus utilizadores os perfis que pretende candidatar-se.

A instituição pode optar por guardar informação do nível de confiança do utilizador no respetivo Repositório ( Ldap, AD, etc.). Por exemplo:

  • Criar atributo eduPersonAssurance no LDAP; ou
  • Criar ou Reutilizar Grupo(s) que espelham o Perfil ( ex: Reutilizar o Grupo “Funcionarios” )

Após a realizado o processo de verificação de conformidade realizado pela equipa de Operação da Federação será necessário configurar o Fornecedor de Identidade para libertar o atributo eduPersonAssurance.

Configurar o Fornecedor de Identidade

Exemplo de configuração do atributo eduPersonAssurance com base num atributo que suporta os perfis no LDAP

Ficheiro: /opt/shibboleth-idp/conf/attribute-resolver-connectors.xml (Adicionar os novos atributos e valores ao DataConnector "staticAttributes" já existente )


 <DataConnector id="staticAttributes" xsi:type="Static">

    <!-- Valores Estáticos RAF (Refeds Assurance Framework) Utilizados em conjunto com o atributo filteredEduPersonAssurance -->
        <Attribute id="refedsAssuranceFramework">
            <Value>https://refeds.org/assurance</Value>
            <Value>https://refeds.org/assurance/ID/unique</Value>
            <Value>https://refeds.org/assurance/ID/eppn-unique-no-reassign</Value>
            <Value>https://refeds.org/assurance/ATP/ePA-1m</Value>
     </Attribute>  

    <!-- RAF (Refeds Assurance Framework) e eduPersonAssurance -->
        <!-- Utilizados em conjunto com o atributo filteredEduPersonAssurance -->
        <!-- Devem estar aqui representados os perfis para os quais a instituição se candidatou e para os quais foi realizado o processo de verificação de conformidade --> 
        <Attribute id="allowedLDAPEduPersonAssurance">
            <Value>https://rctsfederation.fccn.pt/policy/assurance/rcts-p2</Value>
            <Value>https://rctsfederation.fccn.pt/policy/assurance/rcts-p2</Value>
            <Value>https://rctsfederation.fccn.pt/policy/assurance/rcts-p3</Value>  
    </Attribute>

    <!-- Utilizado em conjunto com o atributo eduPersonAssurance -->
        <Attribute id="assuranceLevel0">
            <Value>https://rctsfederation.fccn.pt/policy/assurance/rcts-p0</Value>
            <Value>https://refeds.org/assurance/IAP/low</Value>
   </Attribute>

   </DataConnector>

Ficheiro: /opt/shibboleth-idp/conf/attribute-resolver-rctsaai-core.xml

<!-- filteredLDAPEduPersonAssurance verfica se o utilizador tem AL1, AL2 ou AL3 no LDAP -->
<!-- Utilizado em conjunto com o atributo eduPersonAssurance -->
<!-- Se tem AL1 - Envia AL1, rafMedium e rafCappuccino -->
<!-- Se tem AL2 - Só liberta [AL1,Al2 rafMedium,rafHigh,rafCappuccino e rafEspresso] se o servico pede Refeds MFA caso contrario liberta [AL1, rafMedium e rafCappuccino] -->
<!-- Se tem AL3 - Só liberta [AL1,Al2,AL3 rafMedium,rafHigh,rafCappuccino e rafEspresso] se o servico pede Refeds MFA caso contrario liberta [AL1, rafMedium e rafCappuccino] -->
<!-- NOTA IMPORTANTE - Esta configuracao e apenas um exemplo, devem garantir que só libertam valores RAF para os quais a sua instituição foi aprovada -->

<AttributeDefinition id="filteredLDAPEduPersonAssurance" xsi:type="ScriptedAttribute">

    <InputDataConnector ref="myLDAP" attributeNames="eduPersonAssurance"/>
    <InputDataConnector ref="staticAttributes" attributeNames="allowedLDAPEduPersonAssurance"/>

    <Script><![CDATA[
        logger = Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.eppnbuilder");
        mfaPrincipalName = "https://refeds.org/profile/mfa";

        al3Assurance = "https://rctsfederation.fccn.pt/policy/assurance/rcts-p3"
        al2Assurance = "https://rctsfederation.fccn.pt/policy/assurance/rcts-p2"
        al1Assurance = "https://rctsfederation.fccn.pt/policy/assurance/rcts-p1"

        rafMedium = "https://refeds.org/assurance/IAP/medium"
        rafHigh   = "https://refeds.org/assurance/IAP/high"

        rafCappuccino = "https://refeds.org/assurance/profile/cappuccino"
        rafEspresso = "https://refeds.org/assurance/profile/espresso"

        try {

                value = eduPersonAssurance.getValues().get(0);

                // Verificar que o valor atribuido ao utilizador se encontra dentro dos valores que a instituição pode processar (allowedLDAPEduPersonAssurance)
                if (allowedLDAPEduPersonAssurance.getValues().contains(value))
                {

                    // Se tem AL1 - Envia AL1, rafMedium e rafCappuccino 
                    if (value == al1Assurance)
                    {
                        filteredLDAPEduPersonAssurance.addValue(value);
                        filteredLDAPEduPersonAssurance.addValue(rafMedium);
                        filteredLDAPEduPersonAssurance.addValue(rafCappuccino);
                    }

                    // Se tem AL2 - Só liberta [AL1,Al2 rafMedium,rafHigh,rafCappuccino e rafEspresso] se o servico pede Refeds MFA caso contrario liberta  [AL1, rafMedium e rafCappuccino]     
                    if (value == al2Assurance)
                    {       
                        // Following ascertains if the SP has requested Refeds MFA
                        if (profileContext)
                        {
                             authenticationContext = profileContext.getSubcontext("net.shibboleth.idp.authn.context.AuthenticationContext");
                             if(authenticationContext)
                            {
                                requestedPrincipalContext = authenticationContext.getSubcontext("net.shibboleth.idp.authn.context.RequestedPrincipalContext");
                                if(requestedPrincipalContext)
                                {
                                    matchingPrincipal = requestedPrincipalContext.getMatchingPrincipal();
                                    if (matchingPrincipal && matchingPrincipal.getName() == mfaPrincipalName)
                                    {
                                        filteredLDAPEduPersonAssurance.addValue(al1Assurance);
                                        filteredLDAPEduPersonAssurance.addValue(value);
                                        filteredLDAPEduPersonAssurance.addValue(rafMedium);
                                        filteredLDAPEduPersonAssurance.addValue(rafHigh);
                                        filteredLDAPEduPersonAssurance.addValue(rafCappuccino);
                                        filteredLDAPEduPersonAssurance.addValue(rafEspresso);
                                    }else{
                                        filteredLDAPEduPersonAssurance.addValue(al1Assurance);
                                        filteredLDAPEduPersonAssurance.addValue(rafMedium);
                                        filteredLDAPEduPersonAssurance.addValue(rafCappuccino);
                                    }
                                }
                            }
                        }
                    }

                    //Se tem AL3 - Só liberta [AL1,Al2,AL3 rafMedium,rafHigh,rafCappuccino e rafEspresso] se o servico pede Refeds MFA caso contrario liberta Envia [AL1, rafMedium e rafCappuccino]    
                    if (value == al3Assurance)
                    {
                                // Following ascertains if the SP has requested Refeds MFA
                                if (profileContext)
                                {
                                  authenticationContext = profileContext.getSubcontext("net.shibboleth.idp.authn.context.AuthenticationContext");
                                  if(authenticationContext)
                                  {
                                    requestedPrincipalContext = authenticationContext.getSubcontext("net.shibboleth.idp.authn.context.RequestedPrincipalContext");
                                    if(requestedPrincipalContext)
                                    {
                                      matchingPrincipal = requestedPrincipalContext.getMatchingPrincipal();
                                      if (matchingPrincipal && matchingPrincipal.getName() == mfaPrincipalName)
                                      {
                                        filteredLDAPEduPersonAssurance.addValue(al1Assurance);
                                        filteredLDAPEduPersonAssurance.addValue(al2Assurance);
                                        filteredLDAPEduPersonAssurance.addValue(value);
                                        filteredLDAPEduPersonAssurance.addValue(rafHigh);
                                        filteredLDAPEduPersonAssurance.addValue(rafEspresso);
                                      }else{
                                        filteredLDAPEduPersonAssurance.addValue(al1Assurance);
                                        filteredLDAPEduPersonAssurance.addValue(rafMedium);
                                        filteredLDAPEduPersonAssurance.addValue(rafCappuccino);
                                      }
                                    }
                                  }
                                }
                              }
                            }

            } catch(err) {
                logger.info("eduPersonAssurance not set in LDAP.");
            }
]]>
</Script>
</AttributeDefinition>

<!-- eduPersonAssurance - Envia os valores base da RAF mais o Perfil RCTS-P0 (refedsAssuranceFramework assuranceLevel0)em conjunto com o resultado do filteredLDAPEduPersonAssurance -->
<!-- NOTE WELL: Your organisation must be approved for at least AL1 to use this! -->

<AttributeDefinition xsi:type="Simple" id="eduPersonAssurance">
    <InputAttributeDefinition ref="filteredLDAPEduPersonAssurance" />
    <InputDataConnector ref="staticAttributes" attributeNames="refedsAssuranceFramework assuranceLevel0"/>
    <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonAssurance" encodeType="false" />
    <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.11" friendlyName="eduPersonAssurance" encodeType="false" />
</AttributeDefinition>