Perfis de Confiabilidade RCTS

Perfis de Confiabilidade RCTS


Esta página reflete agora o REFEDS Assurance Framework (RAF) v2.0, publicado a 5 de dezembro de 2023, substituindo os perfis anteriormente baseados na RAF v1.0.

A informação da versão anterior mantém-se disponível, por motivos de histórico e para instituições com processos de conformidade já registados contra essa versão, em Perfis de Confiabilidade RCTS - v1 (arquivo).

Numa federação de identidade, o Fornecedor de Serviço (SP) confia a gestão da identidade digital dos seus utilizadores ao Fornecedor de Identidade (IdP) da organização a que pertencem. O Fornecedor de Serviço precisa de saber o grau de confiança que pode depositar nessa identidade, proporcional à criticidade dos serviços e dados que disponibiliza, de forma a determinar o nível de risco aceitável. Este documento define um conjunto de regras que permite à Federação de Identidade RCTS validar e afirmar essa confiança, de forma consistente entre todos os seus Membros.

Os componentes que definem a qualidade da identidade digital em termos de processos de acreditação, verificação de identidade, gestão de Credenciais e qualidade de atributos baseiam-se em três referências normativas:

Os componentes encontram-se divididos da seguinte forma:

  • Identificadores: 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: requisitos inerentes ao processo de identificação e credenciação dos indivíduos, atribuição de credenciais e respetiva renovação e substituição, correspondendo ao nível de garantia de identidade (IAP low, medium ou high) definido pela RAF v2.0.
  • Qualidade dos Atributos: requisitos relativos à atribuição de determinados níveis de qualidade e atualização dos atributos transmitidos pela organização.

Os requisitos da secção de Autenticação nos documentos definem a robustez do processo de autenticação em si, um conceito distinto da garantia de identidade, de forma compatível com:

Atualmente existem quatro perfis de confiabilidade, que formam um conjunto ordenado de exigência crescente: quem cumpre um perfil mais elevado cumpre automaticamente todos os perfis abaixo dele. Cada perfil é descrito em detalhe nas secções seguintes.

  • RCTS-P0 - nível mínimo, comum a todos os Membros da Federação.
  • RCTS-P1 - identidade verificada com documento aparentemente autêntico.
  • RCTS-P2 - identidade verificada com documento validado por fonte autorizada, com autenticação multifator.
  • RCTS-P3 - nível mais exigente, com verificação via eIDAS, indicado para o acesso a serviços críticos ou altamente confidenciais.

decisao-perfil-rcts.png

Legenda

  • ■ Perfil de confiabilidade atribuído
  • ■ Perfil desce para RCTS-P1 por falta de MFA na sessão

Os perfis RCTS-P2 e RCTS-P3 exigem Autenticação Multifator (MFA) obrigatória. Sem MFA numa sessão, o utilizador é sinalizado apenas como RCTS-P1, independentemente do método de verificação de identidade usado na credenciação.

A tabela comparativa na secção Como Escolher o Perfil, ajudam a identificar qual o perfil indicado para cada grupo de utilizadores da instituição. Note-se que uma instituição não se candidata a um único perfil: os seus utilizadores podem ter níveis de confiança diferentes consoante o processo de identificação e o método de autenticação a que têm acesso, pelo que a mesma instituição pode, e normalmente deve, ter mais do que um perfil ativo em simultâneo (ver Analisar e Classificar Utilizadores).

Além do documento individual de cada perfil (disponível na secção "Links" de cada um), disponibilizamos também um Documento Consolidado que reúne, num único ficheiro, o detalhe normativo completo de todos os perfis. É este o documento de referência a consultar para uma leitura exaustiva dos requisitos, ou em caso de dúvida sobre a interpretação de algum critério.

Consulta o Documento Consolidado, na secção "Como Escolher o Perfil".

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 podem ser auto-asserções; e
  • O sistema de gestão de identidade do membro cumpre os requisitos RCTS-P0.

Processo de Verificação da Conformidade

  • As provas de conformidade são OBRIGATORIAMENTE parte da Declaração de Práticas de Gestão de Identidade, que DEVE descrever como a organização cumpre os requisitos do perfil.
  • A organização Membro declara conformidade por autoauditoria, submetendo a Declaração à equipa de Operação da Federação.
  • A organização Membro DEVE confirmar anualmente que a Declaração se mantém atual, e TEM DE a atualizar antes de alterar o processo ou a tecnologia de gestão de identidade.
  • A Equipa de Gestão da Federação PODE exigir uma auditoria adicional.

Links

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 através de um documento de identidade aparentemente autêntico;
  • O individuo tem um identificador único e permanente;
  • Atributos/Informações associadas à conta do utilizador são da responsabilidade da organização Membro.

Processo de Verificação da Conformidade

  • As provas de conformidade são OBRIGATORIAMENTE parte da Declaração de Práticas de Gestão de Identidade, que DEVE descrever como a organização cumpre os requisitos do perfil.
  • A auditoria da Declaração inclui uma ou mais reuniões, nas quais a equipa de Operação da Federação confirma que a organização Membro compreendeu os requisitos do perfil, resultando numa Avaliação de Perfil de Confiabilidade.
  • A organização Membro DEVE confirmar anualmente que a Declaração se mantém atual, e TEM DE a atualizar antes de alterar o processo ou a tecnologia de gestão de identidade.
  • A Equipa de Gestão da Federação PODE exigir uma auditoria adicional.

Links

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 através de um documento de identidade validado por fonte autorizada;
  • O individuo tem um identificador único e permanente;
  • Os atributos/Informações associadas à conta do utilizador são da responsabilidade da organização Membro;
  • A Autenticação Multifator é obrigatória neste perfil; um utilizador que não recorra a MFA numa sessão é sinalizado apenas como RCTS-P1.

Processo de Verificação da Conformidade

  • As provas de conformidade são OBRIGATORIAMENTE parte da Declaração de Práticas de Gestão de Identidade, que DEVE descrever como a organização cumpre os requisitos do perfil.
  • A auditoria da Declaração inclui uma ou mais reuniões, nas quais a equipa de Operação da Federação confirma que a organização Membro compreendeu os requisitos do perfil, resultando numa Avaliação de Perfil de Confiabilidade.
  • A organização Membro DEVE confirmar anualmente que a Declaração se mantém atual, e TEM DE a atualizar antes de alterar o processo ou a tecnologia de gestão de identidade.
  • A Equipa de Gestão da Federação PODE exigir uma auditoria adicional.

Links

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 através de um sistema eIDAS de nível de confiança Substancial/Elevado, ou credenciais equivalentes (Chave Móvel Digital, Cartão de Cidadão);
  • O individuo tem um identificador único e permanente;
  • Atributos/Informações associadas à conta do utilizador são da responsabilidade da organização Membro;
  • A Autenticação Multifator é obrigatória.

Processo de Verificação da Conformidade

  • As provas de conformidade são OBRIGATORIAMENTE parte da Declaração de Práticas de Gestão de Identidade, que DEVE descrever como a organização cumpre os requisitos do perfil.
  • A auditoria da Declaração inclui uma ou mais reuniões, nas quais a equipa de Operação da Federação confirma que a organização Membro compreendeu os requisitos do perfil, resultando numa Avaliação de Perfil de Confiabilidade.
  • A organização Membro DEVE confirmar anualmente que a Declaração se mantém atual, e TEM DE a atualizar antes de alterar o processo ou a tecnologia de gestão de identidade.
  • A Equipa de Gestão da Federação PODE exigir uma auditoria adicional.

Links

Como Escolher o Perfil


Se ainda não sabes qual perfil se aplica à tua instituição, esta secção ajuda a decidir, e o documento consolidado abaixo tem o detalhe normativo completo de todos os perfis num único ficheiro.

Documento Consolidado

Visão Geral Comparativa dos Perfis

Critério RCTS-P0 RCTS-P1 RCTS-P2 RCTS-P3
É extensão de- (nível mínimo comum a todos os Membros)RCTS-P0RCTS-P0 + RCTS-P1RCTS-P0 + RCTS-P1 + RCTS-P2
Verificação de identidadeAuto-asserção (sem evidência documental)Documento de identidade aparentemente autênticoDocumento de identidade validado por fonte autorizadaSistema eIDAS de nível de confiança Substancial ou Elevado
Autenticação mínima exigidaFator únicoFator únicoMultifator (obrigatório)Multifator (obrigatório)
Nível IAP aproximado (RAF v2.0)low (auto-afirmada)low + medium (verificada com documento)low + medium + high (com MFA; verificada com documento validado)low + medium + high (com MFA; via equivalência eIDAS, Apêndice A.2 da RAF v2.0)
Perfil de assurance RAF- (não atinge Cappuccino)CappuccinoCappuccino e Espresso (com MFA)Cappuccino / Espresso (com MFA)
Processo de verificação de conformidadeAutoauditoria pela própria organizaçãoAuditoria pela equipa de Operação da Federação, com uma ou mais reuniõesAuditoria pela equipa de Operação da Federação, com uma ou mais reuniõesAuditoria pela equipa de Operação da Federação, com uma ou mais reuniões
Caso de uso típicoAuto-registo num portal webMatrícula de um estudanteRegisto de um funcionárioAcesso a serviços críticos ou altamente confidenciais

Casos de Uso

RCTS-P0

  • Processo de inscrição na universidade.
  • Inscrição realizada no portal web via auto-registo, com verificação por confirmação de contacto (e-mail, telefone, etc.).
  • Autenticação com fator único.

RCTS-P1

  • Processo de matrícula de um estudante.
  • Identificação pela exibição de um documento de identidade aparentemente autêntico.
  • Autenticação com fator único.

RCTS-P2

  • Processo de registo de um funcionário.
  • Identificação através da apresentação de um documento de identidade, com verificação posterior através do NIF e outros documentos.
  • Autenticação multifator.

RCTS-P3

  • Acesso a serviços críticos ou altamente confidenciais, onde é essencial a verificação da identidade dos acessos.
  • Identificação verificada através de outras credenciais, como a Chave Móvel Digital ou o Cartão de Cidadão.
  • Autenticação multifator.

Representação dos Valores dos 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] eduperson_assurance.

Em conformidade com a RAF v2.0, sempre que forem afirmados valores de IAP baseados em processo (low/medium/high), o Fornecedor de Identidade DEVE também afirmar o claim https://refeds.org/assurance/version/2, para sinalizar que os critérios normativos da versão 2.0, e não da versão 1.0, foram cumpridos.

Perfil RCTS - P0
Componente de ConfiabilidadeValores
Versão do Frameworkhttps://refeds.org/assurance, https://refeds.org/assurance/version/2
Identificadoreshttps://refeds.org/assurance/ID/unique, https://refeds.org/assurance/ID/eppn-unique-no-reassign [2]
IAPhttps://refeds.org/assurance/IAP/low
Perfil Assurance-
Qualidade dos Atributos [1]Não cumpre; ou
Atualização em 1 Mês: https://refeds.org/assurance/ATP/ePA-1m ou
Atualização em 1 Dia: https://refeds.org/assurance/ATP/ePA-1d
Perfil RCTShttps://rctsfederation.fccn.pt/policy/assurance/RCTS-P0
Perfil RCTS - P1
Componente de ConfiabilidadeValores
Versão do Frameworkhttps://refeds.org/assurance, https://refeds.org/assurance/version/2
Identificadoreshttps://refeds.org/assurance/ID/unique, https://refeds.org/assurance/ID/eppn-unique-no-reassign [2]
IAPhttps://refeds.org/assurance/IAP/low, https://refeds.org/assurance/IAP/medium,
https://refeds.org/assurance/IAP/local-enterprise [3]
Perfil Assurancehttps://refeds.org/assurance/profile/cappuccino
Qualidade dos Atributos [1]Não cumpre; ou
Atualização em 1 Mês: https://refeds.org/assurance/ATP/ePA-1m ou
Atualização em 1 Dia: https://refeds.org/assurance/ATP/ePA-1d
Perfil RCTShttps://rctsfederation.fccn.pt/policy/assurance/RCTS-P0, https://rctsfederation.fccn.pt/policy/assurance/RCTS-P1
Perfil RCTS - P2 (multifator)
Componente de ConfiabilidadeValores
Versão do Frameworkhttps://refeds.org/assurance, https://refeds.org/assurance/version/2
Identificadoreshttps://refeds.org/assurance/ID/unique, https://refeds.org/assurance/ID/eppn-unique-no-reassign [2]
IAPhttps://refeds.org/assurance/IAP/low, https://refeds.org/assurance/IAP/medium, https://refeds.org/assurance/IAP/high,
https://refeds.org/assurance/IAP/local-enterprise [3]
Perfil Assurancehttps://refeds.org/assurance/profile/cappuccino, https://refeds.org/assurance/profile/espresso
Qualidade dos Atributos [1]Não cumpre; ou
Atualização em 1 Mês: https://refeds.org/assurance/ATP/ePA-1m ou
Atualização em 1 Dia: https://refeds.org/assurance/ATP/ePA-1d
Perfil RCTShttps://rctsfederation.fccn.pt/policy/assurance/RCTS-P0, https://rctsfederation.fccn.pt/policy/assurance/RCTS-P1, https://rctsfederation.fccn.pt/policy/assurance/RCTS-P2

Nota: sem autenticação multifator, o utilizador não cumpre RCTS-P2 e é sinalizado apenas como RCTS-P1.

Perfil RCTS - P3 (multifator)
Componente de ConfiabilidadeValores
Versão do Frameworkhttps://refeds.org/assurance, https://refeds.org/assurance/version/2
Identificadoreshttps://refeds.org/assurance/ID/unique, https://refeds.org/assurance/ID/eppn-unique-no-reassign [2]
IAPhttps://refeds.org/assurance/IAP/low, https://refeds.org/assurance/IAP/medium, https://refeds.org/assurance/IAP/high,
https://refeds.org/assurance/IAP/local-enterprise [3]
Perfil Assurancehttps://refeds.org/assurance/profile/cappuccino, https://refeds.org/assurance/profile/espresso
Qualidade dos Atributos [1]Não cumpre; ou
Atualização em 1 Mês: https://refeds.org/assurance/ATP/ePA-1m ou
Atualização em 1 Dia: https://refeds.org/assurance/ATP/ePA-1d
Perfil RCTShttps://rctsfederation.fccn.pt/policy/assurance/RCTS-P0, https://rctsfederation.fccn.pt/policy/assurance/RCTS-P1, https://rctsfederation.fccn.pt/policy/assurance/RCTS-P2, https://rctsfederation.fccn.pt/policy/assurance/RCTS-P3

Nota: sem autenticação multifator, o utilizador não cumpre RCTS-P3 e é sinalizado apenas como RCTS-P1.

  • [1] Se o Fornecedor de Identidade não cumpre os requisitos do componente "Qualidade dos Atributos", não deve ser adicionado valor.
  • [2] Claim adicional, afirmado apenas quando o eduPersonPrincipalName é usado como identificador.
  • [3] Claim opcional, que pode ser adicionalmente afirmado quando o mesmo processo de verificação de identidade e gestão de credenciais é também considerado, pela organização, suficiente para o acesso aos seus sistemas internos críticos. Aplicável apenas a partir do nível IAP medium (perfis RCTS-P1, RCTS-P2 e RCTS-P3).

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 têm acesso à autenticação Multifator, então apenas este conjunto de utilizadores pode candidatar-se ao perfil RCTS-P2 (com MFA) ou RCTS-P3.

As instituições, após a análise de cada um dos perfis de confiabilidade, têm de identificar, de acordo com os requisitos preenchidos pelos seus utilizadores, os perfis a que pretendem 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 "Funcionários").

Após 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, incluindo o claim version/2. Ver a secção Configurar o Fornecedor de Identidade, mais abaixo, para um exemplo de configuração.

Configurar o Fornecedor de Identidade


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

Este exemplo foi atualizado para incluir o claim `version/2`, obrigatório na RAF v2.0, e para corrigir a lista de perfis reconhecidos (RCTS-P1, RCTS-P2 e RCTS-P3) e os claims em falta na afirmação de RCTS-P3 com MFA (`IAP/medium` e `profile/cappuccino`, cumulativos com `IAP/high` e `profile/espresso`).

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 filteredLDAPEduPersonAssurance -->
    <Attribute id="refedsAssuranceFramework">
        <Value>https://refeds.org/assurance</Value>
        <Value>https://refeds.org/assurance/version/2</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 filteredLDAPEduPersonAssurance -->
    <!-- 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-P1</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 verifica 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 serviço pede REFEDS MFA; caso contrário liberta [AL1, rafMedium e rafCappuccino] -->
<!-- Se tem AL3 - Só liberta [AL1, AL2, AL3, rafMedium, rafHigh, rafCappuccino e rafEspresso] se o serviço pede REFEDS MFA; caso contrário liberta [AL1, rafMedium e rafCappuccino] -->
<!-- NOTA IMPORTANTE: esta configuração é apenas um exemplo. A instituição deve garantir que só liberta valores RAF para os quais 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 atribuído 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 serviço pede REFEDS MFA; caso contrário liberta [AL1, rafMedium e rafCappuccino]
                if (value == al2Assurance)
                {
                    // Verifica se o SP pediu 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 serviço pede REFEDS MFA; caso contrário liberta [AL1, rafMedium e rafCappuccino]
                if (value == al3Assurance)
                {
                    // Verifica se o SP pediu 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(rafMedium);
                            filteredLDAPEduPersonAssurance.addValue(rafHigh);
                            filteredLDAPEduPersonAssurance.addValue(rafCappuccino);
                            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 e assuranceLevel0), em conjunto com o resultado do filteredLDAPEduPersonAssurance -->
<!-- NOTA: a instituição tem de estar aprovada para, pelo menos, RCTS-P1 para poder usar este exemplo -->

<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>