Escolar Documentos
Profissional Documentos
Cultura Documentos
GOV
FORNECEDOR DE AUTENTICAÇÃO DA
ADMINISTRAÇÃO PÚBLICA PORTUGUESA
VERSÃO 1.5.7
NOVEMBRO DE 2021
1
Sumário
1 Introdução .................................................................................................................................................................. 3
1.1 Enquadramento ................................................................................................................................................. 3
1.2 Estrutura do documento .................................................................................................................................... 4
1.3 Definições ......................................................................................................................................................... 5
2 Principais Funcionalidades ........................................................................................................................................ 6
3 Visão Geral da Solução .............................................................................................................................................. 8
4 Integração com o Autenticação.Gov do Cartão de Cidadão ..................................................................................... 14
4.1 Entidade no papel de utilizadora da autenticação web .................................................................................... 14
4.2 Entidade no papel de fornecedor de atributos ................................................................................................. 23
5 Utilização da funcionalidade de Single Sign-On ...................................................................................................... 31
5.1 Verificação de autenticação prévia.................................................................................................................. 33
5.2 Logout pelo Portal da Entidade ....................................................................................................................... 36
6 Autenticação com Certificados que não do Cartão de Cidadão ............................................................................... 38
6.1 Atributos disponíveis....................................................................................................................................... 39
6.2 Atributos genéricos ......................................................................................................................................... 43
7 Autenticação via OAuth ........................................................................................................................................... 45
7.1 Fluxo de Obtenção do token ............................................................................................................................ 46
7.2 Fluxo de Obtenção de atributos ....................................................................................................................... 47
8 Grupos de Confiança dos Atributos de Autenticação.Gov ....................................................................................... 49
8.1 Significado dos níveis de confiança ................................................................................................................ 49
8.2 Definição técnica dos níveis de confiança....................................................................................................... 50
9 Política de Apresentação .......................................................................................................................................... 52
9.1 Significado da política de apresentação .......................................................................................................... 52
9.2 Definição técnica da política de apresentação ................................................................................................. 53
10 Utilização de assinaturas digitais ............................................................................................................................. 56
11 Especificações Técnicas ........................................................................................................................................... 58
11.1 Configurações ................................................................................................................................................. 58
Autenticação por SAML ............................................................................................................................................... 60
Autenticação por QRCode ............................................................................................................................................ 94
Fecho de sessão........................................................................................................................................................... 100
12 Lista de atributos disponíveis ................................................................................................................................. 110
13 Referências............................................................................................................................................................. 111
2
1 INTRODUÇÃO
1.1 Enquadramento
Permite também proceder à autenticação de um utilizador com recursos a outros certificados digitais
que não o do Cartão de Cidadão, possibilitando e alargando o leque de autenticação disponível para
as Entidades que pretendam delegar a autenticação nesta componente.
3
1.2 Estrutura do documento
4
1.3 Definições
• GOV – Nas imagens onde está a designação “GOV” deve-se ler “Autenticação.Gov”
• Fornecedor de Atributos - Entidade que, com base na identificação unívoca do
Cidadão pode fornecer dados qualificados do mesmo.
• PI – Plataforma de Interoperabilidade;
• Identificação sectorial – identificação de um Cidadão numa entidade participante da
iniciativa do Cartão de Cidadão (e.g. Número de Identificação Fiscal, identificador
do cidadão na entidade Autoridade Tributária e Aduaneira).
• STORK – Secure identity across borders linked. Iniciativa europeia de identificação
eletrónica transfronteiriça;
• CMD – Chave Móvel Digital;
• SAML – Security Assertion Markup Language;
5
2 PRINCIPAIS FUNCIONALIDADES
6
certificados para os quais o serviço OCSP não se encontre disponível (não é o caso do Cartão
de Cidadão);
7
3 VISÃO GERAL DA SOLUÇÃO
1. O utilizador pretende aceder à área privada do portal de uma entidade, na qual é necessário
que comprove a sua identidade;
8
autenticação. Durante este processo, o Autenticação.Gov efetua as seguintes operações
internas:
Encontra-se disponível um método alternativo de autenticação através da Chave Móvel Digital, que
envolve adicionalmente o Sistema de Autorizações (SA). O fluxo é o seguinte:
1. O utilizador pretende aceder à área privada do portal de uma entidade, na qual é necessário
que comprove a sua identidade;
2. O portal da entidade envia um pedido ao SA (com um token de identificação da entidade)
para ser criada uma Autorização do tipo ‘Autenticação por QRCode’, e recebe a informação
necessária para disponibilizar na sua página o dito QRCode;
3. Utilizando a aplicação móvel Autenticação.Gov o utilizador lê o QRCode, e é-lhe
apresentada a Autorização criada;
4. O utilizador pode aceitar ou recusar a Autenticação, sendo que a resposta é depois
comunicada ao portal;
5. No caso de o utilizador aceitar, o portal da entidade deverá receber, juntamente com a
resposta à Autenticação, um token que permite, através de contacto direto com o
Autenticação.Gov, a obtenção dos atributos necessários para efetuar a autenticação do
utilizador nesse portal (na forma de um token assinado).
9
Dado que no processo de autenticação poderão ser solicitados mais dados que os presentes no chip
do Cartão de Cidadão ou do certificado digital de autenticação, mostra-se necessário a obtenção
destes dados junto de fornecedores de atributos qualificados para o efeito.
Define-se como um Fornecedor de Atributos uma entidade que possua e disponibilize, de acordo
com a identificação e autorização (explícita ou implícita) do utilizador, dados qualificados sobre ele.
O utilizador será sempre informado explicitamente deste processo, necessitando de dar a sua
autorização para a recolha dos atributos;
10
• Terminar Sessão (Logout) – Caso o utilizador já se encontre autenticado e pretenda
terminar a sua sessão, o Fornecedor de Serviço terá de propagar o término de sessão
para o Autenticação.Gov.
De forma a assegurar a autenticação comum entre diferentes portais de entidades (onde poderão
residir os serviços e formulários eletrónicos), as entidades deverão ainda implementar o mecanismo
de SSO descrito na figura seguinte.
11
Na figura supra, as mensagens 1 a 4 são similares às indicadas na secção anterior.
As mensagens 5 a 8 têm por objetivo:
5. O portal da entidade redireciona para site de uma segunda entidade com pedido de
autenticação;
12
6. O site da entidade revalida a credencial eletrónica junto do Autenticação.Gov;
13
4 INTEGRAÇÃO COM O AUTENTICAÇÃO.GOV DO CARTÃO DE
CIDADÃO
14
O Autenticação.Gov responde à entidade com informação autorizada pelo utilizador. A resposta
inclui os atributos solicitados no pedido de autenticação. Esta ligação é também efetuada sobre
HTTP em canal cifrado – SSL ou TLS.
A utilização de canais cifrados, associado ao formato específico SAML garante que a troca de dados
seguir as seguintes considerações:
15
A imagem acima descreve as interações entre o portal da entidade e o Autenticação.Gov, usando o
browser do utilizador como intermediário.
As adaptações a realizar pela entidade recaem nos pontos 2 e 4, que correspondem respetivamente
à criação do pedido de autenticação SAML e no consumo da resposta proveniente do
Autenticação.Gov:
16
digital x.509v3 associado à entidade. O pedido contém quais os atributos que devem ser
obtidos (ex. NIF);
Nos próximos sub-capítulos apresentam-se exemplos de pedidos de autenticação SAML, sendo que
as especificações técnicas detalhadas encontram-se no capítulo 10.
<samlp:AuthnRequest
ID="_1e736a31-a41c-4c35-b17f-0f9ab4c741b3"
Version="2.0"
IssueInstant="2011-02-17T11:15:24Z"
Destination="https://autenticacao.gov..ptDefault.aspx"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://www.ServiceProvider.pt/HandleRequest"
ProviderName="Service Provider Name"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://www.ServiceProvider.pt</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_1e736a31-a41c-4c35-b17f-0f9ab4c741b3">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces PrefixList="#default samlp saml ds xs xsi"
xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transform>
17
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>oypLiC5MkXdKFbs0pA25Z/mt4jk=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...signatureValue...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...x509Data...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<samlp:Extensions>
<fa:RequestedAttributes xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">
<fa:RequestedAttribute Name="AttributeName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-
format:uri" isRequired="true"/>
</fa:RequestedAttributes>
</samlp:Extensions>
</samlp:AuthnRequest>
18
<saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-
format:unspecified">urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData NotOnOrAfter="2011-02-17T11:22:14Z"
Recipient="https://www.ServiceProvider.pt" InResponseTo="_1e736a31-a41c-4c35-b17f-0f9ab4c741b3" Address="127.0.0.1"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2011-02-17T11:17:14Z" NotOnOrAfter="2011-02-17T11:22:14Z">
<saml2:AudienceRestriction>
<saml2:Audience>https://www.ServiceProvider.pt</saml2:Audience>
</saml2:AudienceRestriction>
<saml2:OneTimeUse/>
</saml2:Conditions>
<saml2:AuthnStatement AuthnInstant="2011-02-17T11:17:14.6349444Z">
<saml2:AuthnContext/>
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute Name="AttributeName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
fa:AttributeStatus="Available">
<saml2:AttributeValue xmlns:q1="http://www.w3.org/2001/XMLSchema"
xmlns:d5p1="http://www.w3.org/2001/XMLSchema-instance" d5p1:type="q1:string">AttributeValue</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
19
curl -X POST \
https://www.autenticacao.gov.pt/AuthorizationSystemFrontend/authorizationsystem/frontend/request/qrcodeauthentication
-H 'Authorization: Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NzIyNzUxODksImNsaWVudElkIjoiNTQzNTI2ODA5IiwiZXhwIjoxNTcyMjc1MTg5fQ
.KVWMtTLy_jc_Yl9Wv2B5HM3gsTY97rK8uXrJwsglxE6Q8rPss6il7Ep684shZisSUoHADJw69ri3hGQXhy_8WRef4miuXr2Ahu5e9Gt7hYtkNA27
9yu92Bfqo6qdWbgCsTOgFubL87CrcI5wZb82zGjkiox18XnFVD9WNVicIRE1qRWEfQhRDg5m57AqdZehBV05AeYRCi2l4JgILdF_dcF6hAQxJq
UVKoHE7Dxg0crgrpATb9GrHjA6BNIayDAcJ204bODzQReHD4uGdL6s7GL6mRryVHcEAR-7Qo0JgxZb8TELohsIItox2bun9FD6-
ZemfImjROQKY3YYkg2QdQ' \
-H 'Content-Type: application/json' \
-d '{
"consumerType": "ENTITY",
"consumer":"543526809",
"informationType" : "QR_AUTHENT",
"channelCode":"a639c28a-c680-4706-ac74-404fff9eefde",
"replyDeadline":"2025-01-01 18:40",
"attributeList": [
"http://interop.gov.pt/MDC/Cidadao/NIC",
"http://interop.gov.pt/MDC/Cidadao/NIF",
"http://interop.gov.pt/MDC/Cidadao/NomeProprio",
"http://interop.gov.pt/MDC/Cidadao/NomeApelido",
"http://interop.gov.pt/MDC/Cidadao/DataNascimento",
"http://interop.gov.pt/MDC/Cidadao/DataValidade"
]
}'
20
{
"result": {
"code": "PENDING",
"description": "Autorização está a ser validada"
},
"requestNumber":"65d58856-f5b7-4cd3-be40-9d89fc3ccb13",
"qrCode":
"iVBORw0KGgoAAAANSUhEUgAAASwAAAEsAQAAAABRBrPYAAABZElEQVR42u3a2w3DIAxAUTbz6h6pG9AWbPMIT
jLATaWqgsOPBdiQlvrm+RQYDAaDVS3tkd8v0SIq/xYZrbCESf/WIWS0wnLW+nrzT8Qwb4Xdsvhu0xH2lllc2/qWCntmjiVm
pUq+6mFr+tD1k2UZ2F6u+HSUthumVQ1sCm8LZ5uLPj8tD8My1sNaVZYNcQoz7MymBW1D+v7nkxOWsF4bl96jFuq2tt
dtELZPSzt+eeKQMRCWsuqRnRPJVLvAjqxniShPNC4CvAKEnZl3jysT8V1wL49h2/4WFd7k/HwGO7LIHH0z9MDaSNgt87
O+XdNZYLdVD1vZHGNLtr021v1aGLay6QxW4vF6BXZkdaqR67K+t6oGJuf7N++JDHIpV2D1cr05TvxRrsBu2XgBIdvhr
MKemcQNpwd7TR+whKlVd5Zz9ywDu6Rdzxn2Wn95lQNLWBQncd1UZHpRDTsz/mgEg8FgD+wLNlnBP+xyLJ8AAAAAS
UVORK5CYII="
}
21
Exemplo de mensagem de pedido de obtenção de atributos
22
{
"jsonWebToken":
"eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vaW50ZXJvcC5nb3YucHQvTURDL0NpZGFkYW8vTklDIjoiM
TQwNzU4NzYiLCJleHAiOjE1NzIzNjY2ODh9.e05IFbofLa-dbTdKcbIbqpWXgtOdPInmzN4GoCq04OmJhQIfDc8dLblZeT-
0kwMN_IO__zWfAERI7txS0-0lglujUJQfe-wCv-
X0ojUHq_6pESD9q01PGzCtcAC6ZP2hvQDvJJj8YCHCf3icGLf3N_ruif7_KjIZBnKeYniJM6ZVCnmvF7x7UinJwFRs5wDl
hhRfWiraXt666y5KQfYTxzamOmjrQ1N-
E7czryI0NSgIi4kZgyT8S6ajIXEA17DHgtJ7x9RSJh9Q2tGpQbQItctwiNVZJmFgmBH9v0FbvHdJsaQSUUnugjNTolaKQFQ
mufXeP6H59vHM6rktjX22qw",
"processId": "null",
"result": {
"code": "200",
"description": "JWT token created, atrributes received"
}
}
23
O pedido de obtenção de um atributo será gerado pelo Autenticação.Gov, com o consentimento do
utilizador e posteriormente enviado ao correspondente fornecedor de atributos. Este pedido
materializa-se na invocação de um serviço eletrónico no respetivo fornecedor de atributos que
contem a seguinte informação:
24
• Atributos solicitados – Lista de atributos que são solicitados pelo prestador de serviços e
consentidos pelo cidadão.
• Número de Pedido – Identificador unívoco do pedido de atributos. Este valor será igual ao
número de pedido da mensagem original. Serve como elemento de relação e de apoio à
localização dos vários pedidos de atributos realizados;
• Atributos – Lista de atributos original, com preenchimento dos respetivos valores. A cada
atributo encontra-se associado um estado que identifica o resultado da operação de obtenção
do valor:
Devido à utilização de assinatura digital como forma de validação do pedido de atributos, o conjunto
de dados validados desta forma não poderá ser alterado ou adulterado. Por esta razão, os elementos
que foram alvo de validação por assinatura digital não podem ser alterados, nem mesmo pela
Plataforma de Interoperabilidade, o que impossibilita a normalização de dados, vulgo
“mapeamentos”.
25
Exemplo de mensagem de pedido de Atributos - “FAObterAtributos”
A mensagem seguinte exemplifica um pedido de atributos, neste caso NIC e Nome, realizada pelo
Autenticação.Gov a um Fornecedor de Atributos, via Plataforma de Interoperabilidade.
<fa:FAObterAtributos xmlns:fa="http://autenticacao.cartaodecidadao.pt/servicos"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<fa:IdentificadorCidadao>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</fa:IdentificadorCidadao
>
<fa:PedidoAtributos>
<fa:NumeroPedido>ED6F7BBC-1A42-11DF-A5E3-C17D56D89593</fa:NumeroPedido>
<fa:NomeCidadao>José Manuel Silva</fa:NomeCidadao>
<fa:PrestadorServicosRequerente>http://www.portaldocidadao.pt</fa:PrestadorServicosRequerente>
<fa:DataHora>2001-12-17T09:30:47.0Z</fa:DataHora>
<fa:Atributos>
<fa:Atributo
Nome="http://autenticacao.cartaodecidadao.pt/atributos/2010/01/cidadao/NomeCompleto"/>
<fa:Atributo Nome="http://autenticacao.cartaodecidadao.pt/atributos/2010/01/cidadao/NIC"/>
</fa:Atributos>
<ds:Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
(...)
</ds:Signature>
</fa:PedidoAtributos>
</fa:FAObterAtributos>
A mensagem seguinte exemplifica a resposta a um pedido de atributos, neste caso NIC e Nome. Este
serviço será realizado pelo fornecedor de atributos com destino ao Autenticação.Gov, via Plataforma
de Interoperabilidade.
<fa:FARespostaObterAtributos mlns:fa="http://autenticacao.cartaodecidadao.pt/servicos">
<fa:NumeroPedido>ED6F7BBC-1A42-11DF-A5E3-C17D56D89593</fa:NumeroPedido>
<fa:DataHora>2001-12-17T09:30:47.0Z</fa:DataHora>
<fa:Atributos>
<fa:Atributo Nome="http://autenticacao.cartaodecidadao.pt/atributos/2010/01/cidadao/NomeCompleto"
Resultado="Disponivel">José Manuel Silva</fa:Atributo>
<fa:Atributo Nome="http://autenticacao.cartaodecidadao.pt/atributos/2010/01/cidadao/NIC"
Resultado="Disponivel">123456789</fa:Atributo>
</fa:Atributos>
</fa:FARespostaObterAtributos>
26
Atributos disponíveis – Cartão de Cidadão
Dado que existem atributos que não se encontram presentes no Cartão de Cidadão, seja no
certificado público de autenticação ou no chip, o Autenticação.Gov irá promover a sua obtenção
junto dos fornecedores de atributos qualificados correspondentes.
27
Atributo Identificador Fornecedor de
Atributo
Identificação http://interop.gov.pt/MDC/Cidadao/NICCifrado Plataforma de
Civil (Cifrada) Interoperabilidade
Identificação http://interop.gov.pt/MDC/Cidadao/NSNSCifrado Plataforma de
no Serviço Interoperabilidade
Nacional
Saúde
(Cifrada)
Nacionalidade http://interop.gov.pt/MDC/Cidadao/Nacionalidade Cartão de Cidadão
Idade http://interop.gov.pt/MDC/Cidadao/Idade Cartão de Cidadão
Número de http://interop.gov.pt/MDC/Cidadao/NumeroSerie Cartão de Cidadão
série do
certificado
Foto http://interop.gov.pt/MDC/Cidadao/Foto Cartão de Cidadão
Data de http://interop.gov.pt/MDC/Cidadao/DataValidade Cartão de Cidadão
Validade
Altura http://interop.gov.pt/MDC/Cidadao/Altura Cartão de Cidadão
Nome Próprio http://interop.gov.pt/MDC/Cidadao/NomeProprioPai Cartão de Cidadão
do Pai
Apelido do Pai http://interop.gov.pt/MDC/Cidadao/NomeApelidoPai Cartão de Cidadão
Nome Próprio http://interop.gov.pt/MDC/Cidadao/NomeProprioMae Cartão de Cidadão
da Mãe
Apelido da http://interop.gov.pt/MDC/Cidadao/NomeApelidoMae Cartão de Cidadão
Mãe
Indicações http://interop.gov.pt/MDC/Cidadao/IndicacoesEventuais Cartão de Cidadão
Eventuais
Número do http://interop.gov.pt/MDC/Cidadao/NoDocumento Cartão de Cidadão
Documento
Zona Leitura http://interop.gov.pt/MDC/Cidadao/mrz1 Cartão de Cidadão
Ótica 1
Zona Leitura http://interop.gov.pt/MDC/Cidadao/mrz2 Cartão de Cidadão
Ótica 2
28
Atributo Identificador Fornecedor de
Atributo
Zona Leitura http://interop.gov.pt/MDC/Cidadao/mrz3 Cartão de Cidadão
Ótica 3
Versão do http://interop.gov.pt/MDC/Cidadao/VersaoCartao Cartão de Cidadão
Cartão
Número http://interop.gov.pt/MDC/Cidadao/CartaoPAN Cartão de Cidadão
Cartão PAN
Data de http://interop.gov.pt/MDC/Cidadao/DataEmissao Cartão de Cidadão
Emissão
Entidade http://interop.gov.pt/MDC/Cidadao/EntidadeEmissora Cartão de Cidadão
Emissora
Tipo de http://interop.gov.pt/MDC/Cidadao/TipoDocumento Cartão de Cidadão
Documento
Local de http://interop.gov.pt/MDC/Cidadao/LocalDePedido Cartão de Cidadão
Pedido
Versão http://interop.gov.pt/MDC/Cidadao/Versao Cartão de Cidadão
Distrito http://interop.gov.pt/MDC/Cidadao/Distrito Cartão de Cidadão
Concelho http://interop.gov.pt/MDC/Cidadao/Concelho Cartão de Cidadão
Freguesia http://interop.gov.pt/MDC/Cidadao/Freguesia Cartão de Cidadão
Abreviatura de http://interop.gov.pt/MDC/Cidadao/AbrTipoDeVia Cartão de Cidadão
Tipo de Via
Tipo de Via http://interop.gov.pt/MDC/Cidadao/TipoDeVia Cartão de Cidadão
Designação da http://interop.gov.pt/MDC/Cidadao/DesignacaoDaVia Cartão de Cidadão
Via
Abreviatura do http://interop.gov.pt/MDC/Cidadao/AbrTipoEdificio Cartão de Cidadão
Tipo de
Edifício
Tipo de http://interop.gov.pt/MDC/Cidadao/TipoEdificio Cartão de Cidadão
Edifício
Número de http://interop.gov.pt/MDC/Cidadao/NumeroPorta Cartão de Cidadão
Porta
Andar http://interop.gov.pt/MDC/Cidadao/Andar Cartão de Cidadão
29
Atributo Identificador Fornecedor de
Atributo
Lado http://interop.gov.pt/MDC/Cidadao/Lado Cartão de Cidadão
Lugar http://interop.gov.pt/MDC/Cidadao/Lugar Cartão de Cidadão
Localidade http://interop.gov.pt/MDC/Cidadao/Localidade Cartão de Cidadão
Código Postal 4 http://interop.gov.pt/MDC/Cidadao/CodigoPostal4 Cartão de Cidadão
digitos
Código Postal 3 http://interop.gov.pt/MDC/Cidadao/CodigoPostal3 Cartão de Cidadão
digitos
Localidade http://interop.gov.pt/MDC/Cidadao/LocalidadePostal Cartão de Cidadão
Postal
Número de http://interop.gov.pt/MDC/Cidadao/NumeroDeControlo Cartão de Cidadão
Controlo
Passaporte http://interop.gov.pt/MDC/Cidadao/Passaport Chave Móvel
Digital
30
5 UTILIZAÇÃO DA FUNCIONALIDADE DE SINGLE SIGN-ON
De forma a assegurar a autenticação comum entre vários portais onde poderão residir os serviços e
formulários eletrónicos, as entidades deverão ainda implementar funcionalidades que permitam a
utilização do Cartão de Cidadão como forma de autenticação simplificada entre sites, numa lógica
de single sign-on.
Após correta autenticação Web por parte do Cidadão, conforme descrito no capítulo 4.1, o
Autenticação.Gov manterá internamente, informação de que o mesmo foi autenticado com sucesso.
Torna-se assim possível a aplicação de uma lógica de single sign-on (SSO), demonstrada na figura
seguinte:
31
As mensagens 1 a 4 são similares às indicadas nas secções anteriores, sendo que as restantes têm por
objetivo a validação do mecanismo de SSO. Utiliza-se o Portal do Cidadão como exemplo do Portal
que inicia o fluxo de autenticação:
32
6. Durante a verificação de permissões de acesso à zona de acesso restrito, o portal da
entidade deve verificar junto do Autenticação.Gov, se o cidadão já se encontra
autenticado com o seu Cartão de Cidadão:
• Caso se encontre já autenticado, o portal da entidade deve redirecionar o utilizador
para o Autenticação.Gov de forma automática;
• Caso não tenha sido previamente autenticado, o portal da entidade pode dar a
possibilidade de efetuar o login local ou via Autenticação.Gov, de acordo com a
escolha do Cidadão.
Em situações específicas, poderá ser necessário evitar, para efeitos de usabilidade, a exibição da
página do Autenticação.Gov que pede o consentimento da recolha de atributos ao utilizador.
Incluem-se nestes casos, situações onde haja uma página de um site embebida noutro portal (iframe).
De forma a contemplar o caso acima, o portal que pretende autenticação sem exibir a página de
consentimento, deve solicitar um atributo específico
(http://interop.gov.pt/MDC/FA/PassarConsentimento) de forma a garantir que a página não é
exibida.
A verificação de existência de autenticação prévia a ser realizado pelo portal da entidade tem como
objetivo facilitar e melhorar a interface de autenticação entre o utilizador, o Portal onde o utilizador
se encontra e o Autenticação.Gov.
Esta verificação deverá ser efetuada pelo portal da entidade e consistirá na consulta do retorno http
de uma página alojada no Autenticação.Gov. Esta verificação junto do Autenticação.Gov deve ser
executada sempre que se encontrem reunidas as seguintes condições:
33
• Tentativa de acesso a uma zona restrita do portal da entidade;
• Utilizador não se encontra autenticado no portal da entidade.
Para melhorar a experiência de utilização, aconselha-se que a verificação seja realizada por AJAX.
1
Esta chamada baseia-se no protocolo Cross-Origin Resource Sharing (CORS) sempre que o mesmo
seja suportado pelo browser do cliente. Nas restantes situações deverá ser usado um proxy flash para
2
garantir a máxima compatibilidade, baseado na biblioteca flXHR .
http://www.w3.org/TR/cors/
O exemplo abaixo demonstra a lógica que deve ser adicionada na zona de acesso restrito no portal
do fornecedor de serviço:
var req;
var flproxy;
var isCors = false;
34
req.withCredentials = "true";
req.send(null);
}
else {
//Caso CORS não seja suportado, faz 'fallback' para flXHR
flproxy.open("GET", "https://autenticacao.gov.pt/FA/IsUserAuthenticated.aspx");
flproxy.send();
}
}
}
VerifyFASSO();
Caso o retorno seja o valor 1, significará que o utilizador já se encontra autenticado perante o
Autenticação.Gov, devendo o Portal da entidade redirecionar o utilizador para o mesmo, solicitando
uma autenticação. O Autenticação.Gov efetuará a gestão e lógica de pedido de PIN, de acordo com
as regras definidas:
• Será pedido um novo PIN, caso os atributos solicitados incluam atributos não
fornecidos na última autenticação;
• Não será pedido PIN caso os atributos sejam iguais ou estejam contidos nos obtidos
na última autenticação.
35
Caso o retorno seja 0, significará que o cidadão não se encontra autenticado perante o
Autenticação.Gov. O portal da entidade poderá seguir a sua lógica de autenticação própria, optando
mesmo assim por autenticação via Autenticação.Gov.
Nas situações em que se detete que o browser do utilizador não suporte Javascript, deverá o portal
da entidade agir de acordo com as suas normas internas, sendo que se aconselha a que seja efetuado
um pedido de autenticação ao Autenticação.Gov, para emissão (ou revalidação) do pedido de
autenticação.
Tal como no processo de autenticação mantém-se toda a vertente de segurança nas transações entre
o portal da entidade e o Autenticação.Gov.
36
A imagem acima descreve as interações entre o portal da entidade e o Autenticação.Gov num pedido
de Logout.
As adaptações a realizar pela entidade recaem nos pontos 2 e 3, que correspondem respetivamente
à criação do pedido de Logout SAML e no consumo da resposta proveniente do Autenticação.Gov:
37
6 AUTENTICAÇÃO COM CERTIFICADOS QUE NÃO DO CARTÃO DE
CIDADÃO
Quando um fornecedor de serviços solicitar atributos terá de especificar quais os atributos e qual o
certificado que o utilizador deverá fornecer na autenticação. Por predefinição será usada a cadeia de
certificação do Cartão de Cidadão.
À data da edição deste documento são aceites os certificados emitidos ou credenciados pelas
seguintes entidades:
1 Cartão de Cidadão
2 Ordem dos Advogados
3 Ordem dos Notários
4 Câmara dos Solicitadores
5 Cartão do CEGER (Centro de Gestão da Rede Informática do Governo)
Apenas o Cartão de Cidadão está apto a fazer uso dos fornecedores de atributos e da Plataforma de
Interoperabilidade para a obtenção de atributos que não se encontrem no chip do Cartão de Cidadão
ou do certificado digital de autenticação.
Outro recurso fornecido pelo Autenticação.Gov consiste em pedido de atributos genéricos. Estes
atributos podem ser solicitados pelos fornecedores de serviços sem especificar o certificado a usar,
ficando o utilizador responsável pela escolha do certificado com que pretenda autenticar-se.
38
6.1 Atributos disponíveis
A seleção do certificado a ser usada é da responsabilidade do portal da entidade, que deverá indicar
explicitamente qual a forma de autenticação que pretende que seja usada no Autenticação.Gov. Por
sua vez, o Autenticação.Gov irá solicitar ao utilizador a identificação digital correspondente.
De realçar que a utilização de outros certificados que não os do Cartão de Cidadão apenas se poderão
obter atributos que se encontrem nesse mesmo certificado, não sendo possível a obtenção de
atributos via Plataforma de Interoperabilidade.
39
Atributo Identificador Descrição
Correio http://interop.gov.pt/MDC/Advogado/CorreioElectronico Correio
eletrónico eletrónico
profissional registado na
Ordem
Número de http://interop.gov.pt/MDC/Advogado/NumeroSerie Número de
série do série do
certificado certificado
digital digital
40
Atributo Identificador Descrição
Número http://interop.gov.pt/MDC/Notario/NMECON Número
mecanográfico Mecanográfico
da Ordem dos da Ordem dos
Notários Notários
(difere do
atributo acima
pela presença
do prefixo
ONT)
Nome do http://interop.gov.pt/MDC/Notario/NomeCartorio Nome do
cartório Cartório onde
atua
Distrito do http://interop.gov.pt/MDC/Notario/DistritoCartorio Localidade do
cartório cartório onde
atua
Localidade do http://interop.gov.pt/MDC/Notario/LocalidadeCartorio Distrito do
cartório cartório onde
atua
Correio http://interop.gov.pt/MDC/Notario/CorreioElectronico Correio
eletrónico eletrónico
profissional profissional
Número de http://interop.gov.pt/MDC/Notario/NumeroSerie Número de
série do série do
certificado certificado
digital digital
41
Atributo Identificador Descrição
Nome http://interop.gov.pt/MDC/Solicitador/NomeCompleto Nome completo
completo
Número de http://interop.gov.pt/MDC/Solicitador/NCS Número de
identificação identificação na
profissional Ordem
Correio http://interop.gov.pt/MDC/Solicitador/CorreioElectronico Correio eletrónico
eletrónico registado na
profissional Ordem
Número de http://interop.gov.pt/MDC/Solicitador/NumeroSerie Número de série
série do do certificado
certificado digital
digital
Cartão do CEGER
42
6.2 Atributos genéricos
A tabela seguinte apresenta os valores disponíveis para utilização no atributo “Certificado”, que
deve ser verificado para identificar qual certificado foi usado pelo utilizador na sua autenticação:
A tabela seguinte mostra os atributos que podem ser fornecidos a partir de qualquer Certificado
selecionado pelo utilizador:
43
Atributo Identificador Descrição
Número de http://interop.gov.pt/MDC/Generico/NumeroIdentificacao Número de
identificação identificação do
utilizador,
presente no
certificado
digital
selecionado.
Número de série http://interop.gov.pt/MDC/Generico/NumeroSerie Número de série
do certificado identificativo do
certificado,
presente no
certificado
digital
selecionado.
Os atributos genéricos serão obtidos de acordo com o certificado digital selecionado. Este determina
o contexto dos valores destes atributos. Por exemplo, caso seja apresentado um certificado da Ordem
dos Advogados, o atributo genérico “Número de Identificação” levará à recolha do atributo que
corresponde à identificação do utilizador na Ordem dos Advogados.
Entidade Credenciadora
Atributo
Genérico Cartão Cidadão Advogados Notários Solicitadores
Nome do Nome Completo Nome Completo Nome Completo Nome Completo
utilizador
Número de Número de Número da Número da Número da
identificação identificação civil Ordem dos Ordem dos Ordem dos
Advogados Notários Solicitadores
Número de série Número de série Número de série Número de série Número de série
do certificado do certificado do certificado do certificado do certificado
44
7 AUTENTICAÇÃO VIA OAUTH
45
7.1 Fluxo de Obtenção do token
46
7.2 Fluxo de Obtenção de atributos
4. O sistema requerente após obtenção do access token no fluxo anterior, envia-o para a API
do FA através de um método POST passando um objecto JSON do tipo:
a. token - valor do token obtido no passo anterior;
b. attributesName - uma lista de strings dos atributos a filtrar. Este parâmetro é opcional e
caso não seja preenchido irá retornar todos os atributos relacionados com o token.
c. A API do FA retorna um objecto JSON com os seguintes atributos:
1. token - token obtido no passo anterior;
2. authenticationContextId – Identificador do processo de autenticação.
5. O sistema requerente deve depois utilizar o token e authenticationContextId como valores
query string num pedido GET para obter os valores dos atributos pedidos.
a. Formato do pedido GET:
1. <autenticacao.gov.pt>?token=<token>&authenticationContextId=<authenticationContextI
d>
b. Após o FA validar o token com sucesso é devolvida a lista em JSON com os valores
desses atributos que já tenham sido obtidos. Os atributos que ainda não tenham sido
obtidos são devolvidos com o valor null. (Ver nota abaixo)
47
7.2.1 Exemplos de Pedidos
48
8 GRUPOS DE CONFIANÇA DOS ATRIBUTOS DE
AUTENTICAÇÃO.GOV
Tal diferença de níveis baseia-se na confiança oferecida pela natureza das credenciais usadas numa
autenticação bem como no próprio processo da sua obtenção no Autenticação.Gov. Por exemplo, o
Cartão de Cidadão é emitido e entregue a um cidadão num processo que envolve a identificação
pessoal assim como recolha de dados biométricos; o token criptográfico é suportado em hardware
(chip constante no Cartão de Cidadão) com elevada segurança contra tentativas de violação física; o
uso de um tal token num processo de autenticação na web oferece uma confiança superior à do
clássico desafio utilizador/palavra-passe ou mesmo pela utilização de um certificado de
autenticação suportado em ficheiro em software facilmente replicado e sujeito a apropriação
indevida, consentida ou não pelo seu dono.
• O valor 4:
49
autenticação, se utilizou um Cartão de Cidadão real com conhecimento do PIN de
autenticação
◦ Autenticação com renegociação SSL com certificado cliente da Ordem dos Notários, da
Ordem dos Advogados ou da Câmara dos Solicitadores.
• O valor 3:
• O valor 2
• O valor 1
O Fornecedor de Serviço deve indicar numa extensão SAML o nível mínimo de confiança pretendido
para os atributos pedidos.
<fa:FAAALevel xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">3</fa:FAAALevel>
50
<fa:RequestedAttributes xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">
<fa:RequestedAttribute Name="http://interop.gov.pt/MDC/Cidadao/NIC"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="True" />
<fa:RequestedAttribute Name="http://interop.gov.pt/MDC/Cidadao/NIF"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="False" />
<fa:RequestedAttribute Name="http://interop.gov.pt/MDC/Cidadao/Foto"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="False" />
<fa:RequestedAttribute Name="http://interop.gov.pt/MDC/Cidadao/Morada"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="False" />
</fa:RequestedAttributes>
<fa:FAAALevel xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">3</fa:FAAALevel>
</Extensions>
No caso de não ser definido o nível mínimo por não se incluir o nó <FAAALevel/>, assume-se o
valor de confiança máximo. Para o exemplo seguinte serão obtidos os atributos disponíveis apenas
para o nível 4:
<Extensions>
<fa:RequestedAttributes xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">
<fa:RequestedAttribute Name="http://interop.gov.pt/MDC/Cidadao/NIC"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="True" />
</fa:RequestedAttributes>
</Extensions>
Quando ausente a indicação do nível de confiança do Autenticação.Gov mas esteja presente o QAA
do Stork, é assumido o nível do Autenticação.Gov correspondente.
<Extensions>
<stork:QualityAuthenticationAssuranceLevel
xmlns:stork="urn:oasis:names:tc:SAML:2.0:metadata">3</stork:QualityAuthenticationAssuranceLevel>
<stork:... />
<fa:RequestedAttributes xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">
<fa:RequestedAttribute Name="http://interop.gov.pt/MDC/Cidadao/NIC"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="True" />
</fa:RequestedAttributes>
</Extensions>
51
9 POLÍTICA DE APRESENTAÇÃO
52
São exibidas três ou quatro abas (1conforme disponibilidade da
Autenticação
X1 autenticação através de redes sociais), é possível selecionar uma
Simples
aba e/ou esconder uma, duas ou três abas (se disponíveis quatro).
São exibidas quatro abas, é possível selecionar uma aba e/ou
Redes Sociais X
esconder uma a três abas.
O Fornecedor de Serviço pode indicar numa extensão SAML a política de apresentação pretendida
para as abas. Pode também definir se pretende que a aba CMD oculte a opção de autenticação por
QrCode.
53
<xs:schema targetNamespace="http://autenticacao.cartaodecidadao.pt/presentationpolicy"
xmlns="http://autenticacao.cartaodecidadao.pt/presentation"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AuthTabPresentationPolicies">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="hideAuthTab" type="TabId" maxOccurs="unbounded"/>
<xs:element name="defaultSelectedAuthTab" type="TabId" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="TabId">
<xs:attribute name="TabId">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="CC"/>
<xs:enumeration value="CMD"/>
<xs:enumeration value="UPP"/>
<xs:enumeration value="RSS"/>
<xs:enumeration value="QRCODE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>
Exemplo 1:
<fa:AuthTabPresentationPolicies
xmlns:fa="http://autenticacao.cartaodecidadao.pt/presentationpolicy">
<fa:hideAuthTab TabId="CC"/>
<fa:hideAuthTab TabId="CMD"/>
<fa:defaultSelectedAuthTab TabId ="UPP"/>
</fa:AuthTabPresentationPolicies>
No exemplo acima assume-se que o nível de segurança foi configurado para permitir a exibição da
aba relativa à autenticação através de Utilizador / Palavra-passe.
54
Exemplo 2:
<fa:AuthTabPresentationPolicies
xmlns:fa="http://autenticacao.cartaodecidadao.pt/presentationpolicy">
<fa:defaultSelectedAuthTab TabId="CMD"/>
<fa:hideAuthTab TabId="QRCODE”/>
<fa:hideAuthTab TabId ="RSS"/>
<fa:hideAuthTab TabId ="UPP"/>
</fa:AuthTabPresentationPolicies>
No exemplo acima assume-se que o nível de segurança foi configurado para permitir a exibição das
abas CC e CMD, sendo que a opção QrCode dentro da CMD estará escondida.
55
10 UTILIZAÇÃO DE ASSINATURAS DIGITAIS
A utilização da assinatura digital em XML encontra-se totalmente definida nas normas W3C XML
3
Signature . Este capítulo evidencia as principais características que o Autenticação.Gov irá usar e que
podem ser comprovadas em cada pedido de atributos recebido pelas Entidades.
É usado XMLDSIG com RSA with SHA como suporte à criação e verificação da assinatura, sendo
obrigatório o uso do algoritmo Exclusive Canonicalization [Excl-C14N]
(http://www.w3.org/TR/2001/REC-xml-c14n-20010315) para normalização do xml a assinar. Não
serão usadas outras transformações à exceção da indicação de Enveloped e Exclusive Canonicalization.
3 http://www.w3.org/TR/xmldsig-core/
A mensagem seguinte apresenta um exemplo de uma assinatura digital efetuada sobre a mensagem
FAObterAtributos:
56
<ds:Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-
20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>MWCfrbhhIkxTFAFjWDLz1UsJWUE=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>uVaWld4GEO6W9KFuc2O7HRbukJvsxqvIvjWJXi9XQ2n2kHV9DsKa4MPSVGT5rsAlDPe0oHQd
hX7aEU+oyBX8O1vPHh7LwnDp61D53GrtNcQbPbkRBFpobljuX9UCQlhDJnPNkjFe8EJoeO2Geus02JOkZw+Z0zTgWrk9fRhOe
vI=</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIB8zCCAVwgAwIBAgIQgfzbrIjhLL9FobStI2ub3zANCgYJKoZIhvcNCgEBBAUwEzERMA8G
A1UEAxMIVGVzdGUwHhcNCjAwMDEwMTAwMDAwMFoXDQozNjAxMDEwMDAwMDBaMBMxETAPBgNVBAMTCFRl
c3RlMIGfMA0KBgkqhkiG9w0KAQEBBQOBjTCBiQKBgc77IBnz+oluFJUf/7bAybOLHeMz8ITFvqxOBqI/B7rKVweAXjnN5AO
rTo5IlkJKezfh6b9Qsg0KZddDf8z0b9uk/2sOGr1pYqsunLLBvw0KhZL1iUA5Icdksw0Kby/jEZfaTJc1uOJj8rnqg84yOlrIqhZ575O6d
ohQMTWSv+paWe8CAwEBo0gwRjBEBgNVHQEEPTA7gBCOOHcajwnATYZ0t6w7LVU0oRUwEzERMA8GA1UEAxMIVGV
zdGWCEIH826yI4Sy/RaG0rSNrm98wDQoGCSqGSIb3DQoBAQQFA4GBBL9Qhi6f1Z+/t8oNClwUBcd1FLDRfTdqOJOqtXNwi
mWKsdhP4p/pwESGEXYeZG3i36JouhiMlRXlxMafHK6G9zAMzkDL13/fgcrns4pjDyBw779Lt5JpniE136Gaxwg8S6FlpREjdaNfK
Pqe7JKAuu9ORDC0pUiUfCHWxCoqNos=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</fa:PedidoAtributos>
</fa:FAObterAtributos>
57
11 ESPECIFICAÇÕES TÉCNICAS
A troca de dados com o Autenticação.Gov baseia-se em Security Assertion Markup Language (SAML),
protocolo que visa garantir a autenticidade e privacidade de todas as transações.
SAML é um padrão baseado em XML que permite aos domínios web uma troca de dados de
autenticação e autorização do utilizador de forma segura. Usando SAML, um fornecedor de serviços
pode contactar um fornecedor de identidade on-line, para autenticar um utilizador que pretende
aceder a um conteúdo protegido.
O público-alvo deste capítulo são as equipas técnicas que implementam a integração da autenticação
com o Autenticação.Gov. As interações entre o Autenticação.Gov e fornecedor de serviço são
baseadas em SAML 2.0 e na experiência portuguesa no projeto de identidade eletrónica
transfronteiriça STORK (1).
11.1 Configurações
58
• Identificador do portal (ou Issuer) para efeitos de identificação unívoca no pedido
SAML, cujo valor deve refletir o domínio do portal (ex.
http://www.portaldocidadao.pt) e que é enviado no nó <Issuer/> nas mensagens
AuthnRequest;
• Indicado um e-mail para notificações técnicas - não utilizar email pessoal, utilizar
email de equipa responsável;
59
o Ambiente de teste: https://preprod.autenticacao.gov.pt/fa/Default.aspx
o Ambiente de produção: https://autenticacao.gov.pt/fa/Default.aspx
• Endereço para envio dos pedidos REST, um deles para requisitar a criação de
Autorização, o outro para obter os dados do utilizador que aceita autenticar:
o Pedido de Autorização:
▪ Ambiente de teste:
https://ppr.autenticacao.gov.pt/AuthorizationSystemFrontend/aut
horizationsystem/frontend/request/qrcodeauthentication
▪ Ambiente de produção:
https://www.autenticacao.gov.pt/AuthorizationSystemFrontend/a
uthorizationsystem/frontend/request/qrcodeauthentication
o Pedido de dados:
▪ Ambiente de teste:
https://preprod.autenticacao.gov.pt/OAuthResourceServer/Service
/ResourceJWT.svc/ResourceJWT
▪ Ambiente de produção:
https://autenticacao.gov.pt/OAuthResourceServer/Service/Resour
ceJWT.svc/ResourceJWT
Fluxo de processo
O pedido de autenticação usa SAML 2.0 Authentication Request Protocol de acordo com as
especificações SAML 2.0. As comunicações entre o browser do utilizador e o Autenticação.Gov terão
que ser efetuadas sobre SSL V3+ ou TLS 1.0+.
60
O Autenticação.Gov irá responder ao fornecedor de serviços com a informação de autenticação
verificada e confirmada pelo utilizador. Adicionalmente, o Autenticação.Gov irá incluir na resposta
os atributos que foram solicitados no pedido de autenticação inicial. A resposta é igualmente sobre
SSL V3+ ou TLS 1.0+.
O processo seguinte demonstra a perspetiva do utilizador (User) no acesso a uma área restrita do
fornecedor de serviço (Service Provider)s com utilização do Autenticação.Gov (GOV).
61
O processo de autenticação segue os seguintes passos:
1) Utilizador tenta aceder a área privada, que requer autenticação. O fornecedor de serviços
delega a autenticação no Autenticação.Gov;
62
8) Após conclusão de todo o processo com sucesso é permitido acesso à área restrita.
Todas as mesnsagens SAML são assinados digitalmente. A utilização de assinatura digital irá
garantir a integridade da informação e a correta identificação de todos os participantes no processo
de autenticação.
63
11.1.1.1 Pedido de autenticação
Nota: o parâmetro RelayState pode e deve ser usado pelo fornecedor de serviços para persistir uma
referência opaca da sessão ou do estado no fornecedor de serviços. Não deve exceder os 80 caracteres
e deve possuir mecanismos próprios de integridade. Se presente, o Autenticação.Gov irá processar
o parâmetro de forma a filtrar eventuais vulnerabilidades. Como consequência desse processamento
o Autenticação.Gov poderá devolver o parâmetro alterado ao fornecedor de serviços. Sugere-se a
codificação do RelayState em base 64 para evitar alterações indesejadas no RelayState.
i. Isto indica ao browser que a página invocada no iframe tem de ter o mesmo domínio
que a página que aloja o elemento iframe. Esta definição permite proteger a aplicação
contra ataques de click-jacking, assegurando que o seu conteúdo não fique embebido
noutros websites.
64
2. Elemento iframe (<iframe>) no HTML da página com o atributo src definido como a página
que desejam ver embebida. Esta página criará os pedidos SAML a enviar para o
Autenticação.Gov.
i. Este elemento iframe pode estar envolto numa modal sem que para o efeito sejam
necessárias configurações adicionais.
ii. Reiteramos que a página contida dentro do iframe, que gera os pedidos SAML, deve
ter no header de resposta HTTP X-Frame-Options definido como “SAMEORIGIN” e não
como “DENY”, de modo a permitir a visualização do conteúdo embebido.
O pedido de autenticação é igual ao pedido com ou sem iframe, sendo apenas necessário adicionar
“?Modal=true”, como se poder ver no exemplo abaixo.
<form action="https:// autenticacao.gov.pt/fa/Default..aspx?Modal=true" method="post">
<input type="hidden" name="SAMLRequest” value="[Base64 encodedAuthentication Request]" />
<input type="hidden" name="RelayState" value="State information to be persisted across operation" />
</form>
65
Nota: o parâmetro RelayState pode e deve ser usado pelo fornecedor de serviços para persistir uma
referência opaca da sessão ou do estado no fornecedor de serviços. Não deve exceder os 1000
caracteres e deve possuir mecanismos próprios de integridade. Se presente, o Autenticação.Gov irá
processar o parâmetro de forma a filtrar eventuais vulnerabilidades. Como consequência desse
processamento o Autenticação.Gov poderá devolver o parâmetro alterado ao fornecedor de
serviços. Sugere-se a codificação do RelayState em base 64 para evitar alterações indesejadas no
RelayState.
Pedido de autenticação
A especificação SAML 2.0 para pedido de autenticação será usada para solicitar a autenticação do
utilizador de qualquer fornecedor de serviços.
66
11.1.1.4 <samlp:AuthnRequest>
<sequence>
<element ref="saml:Issuer" minOccurs="0"/>
<element ref="ds:Signature" minOccurs="0"/>
<element ref="samlp:Extensions" minOccurs="0"/>
<element ref="saml:Subject" minOccurs="0"/>
<element ref="samlp:NameIDPolicy" minOccurs="0"/>
<element ref="saml:Conditions" minOccurs="0"/>
<element ref="samlp:RequestedAuthnContext" minOccurs="0"/>
<element ref="samlp:Scoping" minOccurs="0"/>
</sequence>
<attribute name="ID" type="ID" use="required"/>
<attribute name="Version" type="string" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/>
<attribute name="Destination" type="anyURI" use="Opcional"/>
<attribute name="Consent" type="anyURI" use="Opcional"/>
<attribute name="ForceAuthn" type="boolean" use="Opcional"/>
<attribute name="IsPassive" type="boolean" use="Opcional"/>
<attribute name="ProtocolBinding" type="anyURI" use="Opcional"/>
<attribute name="AssertionConsumerServiceIndex" type="unsignedShort"use="Opcional"/>
<attribute name="AssertionConsumerServiceURL" type="anyURI"use="Opcional"/>
<attribute name="AttributeConsumingServiceIndex" type="unsignedShort"use="Opcional"/>
Obrigat
Atributo Valores Notas
ório
5
A definição de ID (ver nota de
6
rodapé 4) permite o uso de UUID
Obriga 4 iniciado ou precedido por um dos
ID Tipo de dados xs:ID
tório 7
caracteres permitidos em( ) (e.g.
“_0dec26dd-fc3b-47c6-af9d-
1cd38db10c55”)
Obriga
Version 2.0 Versão SAML
tório
67
Obrigat
Atributo Valores Notas
ório
UTC como definido em
http://www.w3.org/TR/xmlschem
Obriga a-2/#dateTime
IssueInstant
tório (ecemplo: 2011-08-
09T18:43:09.6882193Z)
68
Obrigat
Atributo Valores Notas
ório
11.1.1.5 <samlp:issuer>
Obrigatoriedade: Obrigatório
O elemento <Issuer> contém um URI que identifica o Fornecedor de Serviços e deve ser mutuamente
acordada com o Autenticação.Gov.
69
Atributo Obrigatório Valores Notas
Name identifier if different from the name in the contents
SPProvidedID Não usado
of the element.
11.1.1.6 <ds:signature>
Obrigatoriedade: Obrigatório
11.1.1.7 <samlp:extensions>
Obrigatoriedade: Obrigatório
Este elemento contém uma extensão para o padrão SAML 2.0 pedido de autenticação. No
Autenticação.Gov essas extensões incluem:
<fa:RequestedAttributes>
Obrigatoriedade: Obrigatório
70
Este elemento contém um ou mais <fa:RequestedAttribute>. O uso deste é o que permite solicitar ao
Autenticação.Gov os atributos a serem adicionados à resposta de autenticação.
< fa:RequestedAttribute>
<complexType name="RequestedAttributeType">
<sequence>
<element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Name" type="string" use="required"/>
<attribute name="NameFormat" type="anyURI" use="Opcional"/>
<attribute name="FriendlyName" type="string" use="Opcional"/>
<anyAttribute namespace="##other" processContents="lax"/>
<attribute name="isRequired" type="boolean" use="Opcional"/>
</complexType>
Obrigatoriedade: Obrigatório
<saml:AttributeValue>
Obrigatoriedade: Opcional
O elemento <saml:AttributeValue> permite que o SP indique que o atributo pedido deve ter um dos
valores especificados ou seja, retornar apenas este atributo se o valor deste atributo é um dos valores
solicitados.
71
11.1.1.8 <saml:Subject>
Obrigatoriedade: Não usado
11.1.1.9 <saml:NameIdPolicy>
Obrigatoriedade: Opcional
Pedidos de formatos específicos e qualificação para o identificador que representa o sujeito - Nota: o elemento
<NameIdPolicy> na resposta pode não ter os formatos específicos solicitados e qualificadores.
11.1.1.10 <saml:Conditions>
Obrigatoriedade: Não usado
72
11.1.1.11 <samlp:RequestedAuthnContext>
Obrigatoriedade: Não usado
11.1.1.12 <samlp:Scoping>
Obrigatoriedade: Não usado
<samlp:IDPList>
Obrigatoriedade: Não usado
<samlp:RequesterID>
Obrigatoriedade: Não usado
<samlp:AuthnRequest
ID="_1e736a31-a41c-4c35-b17f-0f9ab4c741b3"
Version="2.0"
IssueInstant="2011-02-17T11:15:24Z"
Destination="https://autenticacao.gov.pt/fa/default.aspx"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://www.ServiceProvider.pt/HandleRequest"
ProviderName="Service Provider Name"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://www.ServiceProvider.pt</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_1e736a31-a41c-4c35-b17f-0f9ab4c741b3">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-
signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces PrefixList="#default samlp saml ds xs
xsi" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>oypLiC5MkXdKFbs0pA25Z/mt4jk=</DigestValue>
73
</Reference>
</SignedInfo>
<SignatureValue>...signatureValue...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...x509Data...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<samlp:Extensions>
<fa:RequestedAttributes xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos">
<fa:RequestedAttribute Name=" http://interop.gov.pt/MDC/Cidadao/NomeCompleto"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/>
</fa:RequestedAttributes>
</samlp:Extensions>
</samlp:AuthnRequest>
Resposta de autenticação
<sequence>
<element ref="saml:Issuer" minOccurs="0"/>
<element ref="ds:Signature" minOccurs="0"/>
<element ref="samlp:Extensions" minOccurs="0"/>
<element ref="samlp:Status"/>
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:Assertion"/>
<element ref="saml:EncryptedAssertion"/>
</choice>
</sequence>
<attribute name="ID" type="ID" use="required"/>
<attribute name="InResponseTo" type="NCName" use="Opcional"/>
<attribute name="Version" type="string" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/>
<attribute name="Destination" type="anyURI" use="Opcional"/>
Obrigatoriedade: Obrigatório
74
Atributo Obrigatório Valores Notas
12
A definição de ID (ver nota de
rodapé 4) permite o uso de
13
UUID iniciado ou precedido
11
ID Obrigatório Tipo de dados xs:ID por um dos caracteres
14
permitidos em( ) (e.g.
“_0dec26dd-fc3b-47c6-af9d-
1cd38db10c55”)
The identifier (ID) of the request
InResponseTo Obrigatório
this response refers to.
Version Obrigatório 2.0
UTC Date & time when the
IssueInstant Obrigatório
response was issued.
URI reference of the SP SAML
Response processor this
response is being sent to.
Destination Obrigatório Should be the same as
AssertionConsumerServiceURL
in the associated Authentication
Request.
urn:oasis:names:tc:SAML:2.0:consent:obtained
75
Atributo Obrigatório Valores Notas
urn:oasis:names:tc:SAML:2.0:consent:curent-
explicit
urn:oasis:names:tc:SAML:2.0:consent:unspecified
11.1.1.14 <saml:Issuer>
<element name="Issuer" type="saml:NameIDType"/>
<complexType name="NameIDType">
<simpleContent>
<extension base="string">
<attributeGroup ref="saml:IDNameQualifiers"/>
<attribute name="Format" type="anyURI" use="Opcional"/>
<attribute name="SPProvidedID" type="string" use="Opcional"/>
</extension>
</simpleContent></complexType>
Obrigatoriedade: Obrigatório
O elemento <Issuer> contém um URI que identifica o SP e deve ser mutuamente acordada com o
Autenticação.Gov.
Obrigatór
Atributo Valores Notas
io
NameQualifie Não The security domain that
r usado qualifies that name.
SPNameQualif Não Qualifying the name with a
ier usado name of a service provider.
URI representing the
classification of the identifier.
urn:oasis:names:tc:SAML:2.0:nameidform
Format Opcional Default is
at:entity
urn:oasis:names:tc:SAML:2.0:na
meid-format:entity.
Name identifier if different from
Não
SPProvidedID the name in the contents of the
usado
element.
76
11.1.1.15 <ds:Signature>
Obrigatoriedade: Não usado
11.1.1.16 <samlp:Extensions>
Obrigatoriedade: Não usado
11.1.1.17 <samlp:Status>
</complexType>
Obrigatoriedade: Obrigatório
<samlp:StatusCode>
Obrigatoriedade: Obrigatório
77
Atributo Obrigatório Valores Notas
Consortium,
2005)
Especifica um conjunto de códigos de estado opcional e um valor de atributo que representa o estado
do Pedido de Autenticação.
Uma lista de códigos de estados são definidos pela OASIS em SAML 2.0 e estes serão adotadas
sempre que pertinente. Adicionalmente são usados códigos para situações específicas
Autenticação.Gov.
Os valores para os dois níveis de códigos de estado estão listadas abaixo. Para mais informações,
consulte a especificação SAML 2.0 (OASIS Consortium, 2005).
a) Estados de primeiro nível:
a. urn:oasis:names:tc:SAML:2.0:status:Success – Operação efetuada com sucesso..
78
b) Estados subordinados:
a. urn:oasis:names:tc:SAML:2.0:status:AuthnFailed – Autenticação do utilizador
falhou ou não foi realizada com sucesso.
b. urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue – Valor ou
conteúdo inválido no pedido de atributos associados aos elementos
<saml:Attribute> ou<saml:AttributeValue>.
c. urn:oasis:names:tc:SAML:2.0:status:RequestDenied – O Autenticação.Gov
encontra-se funcional, mas optou por não responder ao pedido de
autenticação. Este código pode ser usado sempre que existe uma falha em
validações de segurança associadas ao pedido SAML ou ao próprio
fornecedor de serviços.
<samlp:Status-Message>
Obrigatoriedade: Opcional
Explica o valor de estado em termos percetíveis. A tabela abaixo define as mensagens de estado em
português (e inglês para o contexto).
Se o código de estado subordinado é incluído na resposta, então a mensagem de estado deve ser o
correspondente ao código de estado subordinado, e não o código de estado de primeiro nível.
79
Código Retorno Mensagem (PT) Mensagem (EN)
a um erro no pedido an error on the SAML
SAML no responder side
Autenticação.Gov, (Autenticação.Gov)
identificado pelo seu identified by its URI.
URI
Não foi possível It was unable to
urn:oasis:names:tc:SAML:2.0:status:AuthnFailed autenticar o Cidadão successfully
(ou Utilizador) authenticate the user
Conteúdo inválido ou Unexpected or
não esperado nos invalid content was
urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrV elementos encountered within a
alue <saml:Attribute> ou <saml:Attribute> or
<saml:AttributeValu <saml:AttributeValu
e> e> element
O pedido não foi The request has not
urn:oasis:names:tc:SAML:2.0:status:RequestDenied
processado been processed.
<samlp:Status-Detail>
Obrigatoriedade: Não usado
11.1.1.18 <saml:Assertion>
Obrigatoriedade: Obrigatório
A resposta de uma autenticação SAML deve conter o elemento <Assertion>.. O elemento <Assertion>
conterá um único elemento <Subject> indicando ao utilizador qual a <Assertion> que o relaciona. Irá
também conter um único elemento <AuthnStatement > contendo os resultados da autenticação de
utilizador e um único elemento <AttributeStatement> contendo zero ou mais elementos <attribute>.
Uma descrição detalhada do elemento <Assertion> é dada na secção abaixo.
11.1.1.19 <saml:EncryptedAssertion>
Obrigatoriedade: Não usado
80
O Autenticação.Gov não implementa asserções cifradas dado que as comunicações já se baseiam
num canal cifrado sobre SSL V3+ ou TLS v1.0+.
<saml2p:Response
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos"
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_0314efee-a385-4ca9-afab-4bffbb6a788b"
InResponseTo="_1e736a31-a41c-4c35-b17f-0f9ab4c741b3"
Version="2.0"
IssueInstant="2011-02-17T11:17:14.6349444Z"
Destination="https://www.ServiceProvider.pt/HandleResponse"
Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified">
<saml2:Issuer>https://autenticacao.cartaodecidadao.pt</saml2:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_0314efee-a385-4ca9-afab-4bffbb6a788b">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-
signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>qqC76JmDP+2i1s0oxY8EsSD4tic=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...signatureValue...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...x509Data...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<saml2p:Status>
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
<saml2:Assertion Version="2.0" ID="_b1c88f11-50fd-4a22-988e-9ce4573049e0" IssueInstant="2011-02-
17T11:17:14.6349444Z">
…
</saml2:Assertion>
</saml2p:Response>
81
SAML Assertion
Uma asserção SAML é um pacote de informações de segurança. Especifica que essa afirmação foi
emitida por uma entidade num determinado momento e atesta a identidade da entidade da mesma,
desde que as condições especificadas de validação tenham sido satisfeitas.
11.1.1.21 <saml:Assertion>
</complexType>
Obrigatoriedade: Obrigatório
82
Atributo Obrigatório Valores Notas
18
permitidos em( ) (e.g. “_0dec26dd-fc3b-47c6-af9d-
1cd38db10c55”)
Version Obrigatório 2.0 SAML Version
IssueInstant Obrigatório UTC date & time assertion was issued
11.1.1.22 <saml:Issuer>
Obrigatoriedade: Obrigatório
Obrigatór
Atributo Valores Notas
io
18 http://www.w3.org/TR/REC-xml/#NT-Lette
83
Obrigatór
Atributo Valores Notas
io
11.1.1.23 <ds:Signature>
Obrigatoriedade: Opcional
Se o HTTP POST Binding é usado, a asserção SAML terá que estar assinada.
11.1.1.24 <saml:Subject>
<complexType name="SubjectType">
<choice>
<sequence>
84
<choice>
<element ref="saml:BaseID"/>
<element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/>
</choice>
<element ref="saml:SubjectConfirmation" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/>
</choice>
</complexType>
Obrigatoriedade: Obrigatório
<saml:NameId>
Obrigatoriedade: Obrigatório
Reprensenta o sujeito.
85
Atributo Obrigatório Valores Notas
A URI defining the
format of the
NameId. The
User’s eID is
provided in a
separate attribute.
NameId should not
Format Obrigatório urn:oasis:names:tc:SAML:2.0:nameidformat:unspecified
be used to assert
the subject’s
identity but may be
used to assert
return visits from a
user using the same
authentication.
Name identifier if
different from the
SPProvidedID Não usado name in the
contents of the
element.
<saml:EncryptedID>
Obrigatoriedade: Não usado
<xenc:EncryptedData>
Obrigatoriedade: Não usado
<xenc:EncryptedKey>
Obrigatoriedade: Não usado
<saml:SubjectConfirmation>
<complexType name="SubjectConfirmationType">
86
<sequence>
<choice minOccurs="0">
<element ref="saml:BaseID"/>
<element ref="saml:NameID"/>
<element ref="saml:EncryptedID"/>
</choice>
<element ref="saml:SubjectConfirmationData" minOccurs="0"/>
</sequence>
<attribute name="Method" type="anyURI" use="required"/>
</complexType>
Obrigatoriedade: Obrigatório
<saml:SubjectConfirmationData>
Obrigatoriedade: Obrigatório
87
Atributo Obrigatório Valores Notas
Not allowed under Browser SSO Profile i.e. where
NotBefore Opcional
SubjectConfirmation method is bearer.
Subject cannot be confirmed on or after this time. If
SubjectConfirmation method is holder-of-key then this
NotOnOrAfter Obrigatório
value must be less than or equal to the NotBefore attribute
in the X.509 certificate.
URI reference of the SP this assertion is being sent to. This
should be the same value as the
Recipient Obrigatório
AssertionConsumerServiceURL attribute in the
Authentication Request
InResponseTo Obrigatório Id of the Request that requested this assertion
IP address of user that this assertion was issued to.
Obrigatório for bearer SubjectConfirmation method as it
Address Opcional
allows
Relying Parties to mitigate against a Man-In-The-Middle.
<ds:KeyInfo>
Obrigatoriedade: Opcional
88
11.1.1.24.1.1
<ds:X509Data>
Obrigatoriedade: Não usado
11.1.1.25 <saml:Conditions>
<complexType name="ConditionsType">
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="saml:Condition"/>
<element ref="saml:AudienceRestriction"/>
<element ref="saml:OneTimeUse"/>
<element ref="saml:ProxyRestriction"/>
</choice>
<attribute name="NotBefore" type="dateTime" use="Opcional"/>
<attribute name="NotOnOrAfter" type="dateTime" use="Opcional"/>
</complexType>
Obrigatoriedade: Obrigatório
Este elemento especifica as condições que devem ser validadas quando se utiliza o elemento <Assertion>.
Essas condições devem ser as mesmas que as condições especificadas no pedido <AuthnRequest>.
11.1.1.26 <saml:Condition>
Obrigatoriedade: Não usado
11.1.1.27 <saml:AudienceRestriction>
<complexType name="AudienceRestrictionType">
<complexContent>
<extension base="saml:ConditionAbstractType">
<sequence>
<element ref="saml:Audience" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
89
</complexType>
Obrigatoriedade: Obrigatório
Restringe a audiência desta asserção para o fornecedor de serviços e contém a referência URI para o
qual está a ser enviado.
<saml:Audience>
Obrigatoriedade: Obrigatório
<saml:OneTimeUse>
Obrigatoriedade: Obrigatório
Define que esta asserção tem que ser utilizada de imediato e não pode ser mantida para uso futuro.
<saml:ProxyRestrictions>
Obrigatoriedade: Não usado
11.1.1.28 <saml:Advice>
Obrigatoriedade: Não usado
11.1.1.29 <saml:AuthnStatement>
<complexType name="AuthnStatementType">
<complexContent>
<extension base="saml:StatementAbstractType">
<sequence>
<element ref="saml:SubjectLocality" minOccurs="0"/>
<element ref="saml:AuthnContext"/>
</sequence>
<attribute name="AuthnInstant" type="dateTime" use="required"/>
<attribute name="SessionIndex" type="string" use="Opcional"/>
<attribute name="SessionNotOnOrAfter" type="dateTime" use="Opcional"/>
</extension>
</complexContent>
</complexType>
Obrigatoriedade: Obrigatório
90
Atributo Obrigatório Valores Notas
AuthnInstant Obrigatório Date & Time User was actually authenticated
Index of the User’s Autenticação.Gov session. Allow
SessionIndex Opcional for increased interoperability with other profiles.
When the User’s IdP session is deemed to have
SessionNotOnOrAfter Não usado expired.
<saml:SubjectLocality>
<complexType name="SubjectLocalityType">
<attribute name="Address" type="string" use="Opcional"/>
<attribute name="DNSName" type="string" use="Opcional"/>
</complexType>
Obrigatoriedade: Obrigatório
Este elemento deve conter o nome de domínio DNS e endereço IP do sistema a partir do qual o
utilizador foi autenticado.
<saml:AuthnContext>
Obrigatoriedade: Não usado
11.1.1.30 <saml:AttributeStatement>
Obrigatoriedade: Opcional
Este elemento contém vários elementos <attribute> contendo informações de atributo associado com
o tema SAML. Para cada atributo solicitado no elemento <AuthnRequest> o elemento
<AttributeStatement> contém um elemento único <attribute> disponível.
<saml:Attribute>
91
<complexType name="AttributeType">
<sequence>
<element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Name" type="string" use="required"/>
<attribute name="NameFormat" type="anyURI" use="Opcional"/>
<attribute name="FriendlyName" type="string" use="Opcional"/>
<anyAttribute namespace="##other" processContents="lax"/>
</complexType>
<saml:AttributeValue>
Obrigatoriedade: Opcional
Valor do atributo, se disponível. Este valor será codificado na base64 para interoperabilidade
máxima (a validar em sede de integração).
<saml:EncryptedAttribute>
Obrigatoriedade: Não usado
<xenc:EncryptedData>
92
Obrigatoriedade: Não usado
<xenc:EncryptedKey>
Obrigatoriedade: Não usado
93
Autenticação por QRCode
Fluxo do processo
O processo de Autenticação por QRCode envolve comunicações HTTP REST entre o portal da
Entidade, o Sistema de Autorizações (SA) e o Fornecedor de Atributos (FA). O processo de
autenticação devolve ao portal da entidade um token identificativo que é utilizado para obter a
informação requisitada acerca do utilizador que se quer autenticar.
O processo seguinte demonstra a perspetiva do utilizador (User) no acesso a uma área restrita do
fornecedor de serviço (Service Provider) com utilização da Autenticação por QRCode.
94
11. Lendo o token, o portal tem acesso à informação que pediu acerca do utilizador, sendo esta
utilizada para efetuar o login do mesmo.
A troca de informações identificativas do portal e do utilizador é efetuada através de JWT,
devidamente assinados para garantir a integridade dos dados.
A especificação JSON para pedido de criação de autorização do tipo ‘Autenticação por QRCode’
será usada para solicitar a autenticação do utilizador de qualquer fornecedor de serviços.
95
Descrição: Pedido de criação de autorização do tipo ‘Autenticação por QRCode’
ID Campo Tamanho Obrigatório Observações
Identificador do fornecedor de
1 Consumer 8 Não
serviço
Sempre QR_AUTHENT neste
2 InformationType 10 Sim
contexto
3 ConsumerType 10 Sim Sempre ENTITY neste contexto
Descrição do pedido de
4 RequestDescription 45 Não
autorização
5 ConsumerName - Não Nome do fornecedor de serviço
6 ChannelCode 45 Sim Identificador de canal
7 ReplyTo 200 Não URL para resposta asíncrona
8 ReplyDeadline 16 Sim Prazo para o utilizador responder
Lingua para a descrição dos
9 LanguageDescription 5 Não
atributos
Lista de atributos a obter do
10 AttributeList - Sim
utilizador
96
Figure 1 - Exemplo de um JWT usado em pedidos de criação de Autenticação por QRCode
(descodificação em https://jwt.io/)
97
QRCode contendo a informação do campo requestNumber
3 qrCode
(em base64)
Uma vez recebendo a resposta positiva por parte do Sistema de Autorizações, o fornecedor de
serviço tem 2 opções:
1. Utilizar a informação do campo qrCode para disponibilizar a imagem diretamente ao
utilizador;
2. Utilizar a informação do campo requestNumber e criar um QRCode personalizado para
mostrar ao utilizador (nota: o QRCode apenas pode conter a informação do campo
requestNumber e mais nada).
A especificação JSON para pedido de obtenção de atributos será usada para solicitar a informação
identificativa de qualquer utilizador.
98
11.1.6 Resposta da obtenção de atributos
99
Fecho de sessão
Fluxo de processo
O pedido de fecho de sessão usa SAML 2.0 logout protocol de acordo com as especificações SAML
2.0. As comunicações entre o browser do utilizador e o Autenticação.Gov devem ser efetuadas sobre
SSL V3+ ou TLS 1.0+.
O Autenticação.Gov irá responder ao SP, com a informação de logout. Esta ligação é também
suportada sobre SSL V3+ ou TLS 1.0+.
100
O processo de logout seguirá os seguintes passos:
1) Utilizador pretende fechar a sessão no Autenticação.Gov;
6) O fornecedor de serviços deve validar a resposta SAML para assegurar que o pedido foi
realizado com sucesso. Deve também efetuar o fecho de sessão específico no seu portal;
101
7) Após conclusão do processo com sucesso, o utilizador deixará de ter sessão ativa no
Autenticação.Gov.
Logout Request
11.1.6.1 <samlp:LogoutRequest>
<sequence>
<element ref="saml:Issuer" minOccurs="0"/>
<element ref="ds:Signature" minOccurs="0"/>
<element ref="samlp:Extensions" minOccurs="0"/>
<element ref="samlp:SessionIndex" minOccurs="0"/>
<element ref="saml:NameID"/>
</sequence>
<attribute name="ID" type="ID" use="required"/>
<attribute name="Version" type="string" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/>
<attribute name="Destination" type="anyURI" use="Opcional"/>
<attribute name="Consent" type="anyURI" use="Opcional"/>
<attribute name="NotOnOrAfter" type="dateTime" use="Opcional"/>
<attribute name="Reason" type="string" use="Opcional"/>
Obrigatoriedade: Obrigatório
102
Atributo Obrigatório Valores Notas
fc3b-47c6-af9d-
1cd38db10c55”)
Version Obrigatório 2.0 SAML Version
UTC date & time request
IssueInstant Obrigatório
was issued
URI reference of SAML
Destination Obrigatório
Request is being sent to
Consent Opcional urn:oasis:names:tc:SAML:2.0:consent:unspecified
NotOnOrAfter Não usado
Reason Não usado
11.1.6.2 <samlp:issuer>
Obrigatoriedade: Obrigatório
Igual à especificação AuthnRequest.
11.1.6.3 <ds:signature>
Obrigatoriedade: Obrigatório
Igual à especificação AuthnRequest.
11.1.6.4 <samlp:extensions>
Obrigatoriedade: Opcional
Este elemento contém uma extensão para o padrão SAML 2.0 pedido de logout. No
Autenticação.Gov essa extensão inclui:
103
<fa:LogoutUrl>
Obrigatoriedade: Opcional
Este elemento contêm uma URI, com o objetivo de indicar onde o fornecedor de serviços pretende
receber a resposta de logout.
<xs:schema targetNamespace="http://autenticacao.cartaodecidadao.pt/logout"
xmlns="http://autenticacao.cartaodecidadao.pt/logout"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="LogoutUrl">
<xs:simpleType>
<xs:restriction base="xs:anyURI">
<xs:pattern value="https://.+"/>
</xs:restriction>
<xs:simpleType>
</xs:element>
</xs:schema>
11.1.6.5 <saml:NameID>
Obrigatoriedade: Obrigatório
104
11.1.6.6 <samlp:SessionIndex>
Obrigatoriedade: Não usado
</saml2p:LogoutRequest>
105
ID="_5936a065-8ed5-4cb8-9fd4-3c808acbfb7b"
Version="2.0"
IssueInstant="2011-02-09T11:39:01.0343448Z"
Destination="https://autenticacao.gov.pt/Default.aspx"
Consent="urn:oasis:names:tc:SAML:2.0:logout:user"
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:Issuer>http://www.serviceprovider.pt/</saml2:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_5936a065-8ed5-4cb8-9fd4-3c808acbfb7b">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-
signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>KivtKyBDpS4v9OECsXY6l1aTBNg=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...signatureValue...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...x509Data...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<Extensions>
<fa:LogoutUrl xmlns:fa="http://autenticacao.cartaodecidadao.pt/logout">https://(...)</fa:LogoutUrl>
</Extensions>
<saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-
format:unspecified">urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</saml2:NameID>
</saml2p:LogoutRequest>
Logout Response
<sequence>
<element ref="saml:Issuer" minOccurs="0"/>
<element ref="ds:Signature" minOccurs="0"/>
<element ref="samlp:Extensions" minOccurs="0"/>
<element ref="samlp:Status"/>
</sequence>
<attribute name="ID" type="ID" use="required"/>
<attribute name="InResponseTo" type="NCName" use="Opcional"/>
<attribute name="Version" type="string" use="required"/>
<attribute name="IssueInstant" type="dateTime" use="required"/>
<attribute name="Destination" type="anyURI" use="Opcional"/>
<attribute name="Consent" type="anyURI" use="Opcional"/>
106
Obrigatoriedade: Obrigatório
11.1.6.8 <saml:Issuer>
Obrigatoriedade: Obrigatório
Igual à especificação AuthnResponse.
107
11.1.6.9 <ds:Signature>
Obrigatoriedade: Não usado
11.1.6.10 <samlp:Extensions>
Obrigatoriedade: Não usado
11.1.6.11 <samlp:Status>
</complexType>
Obrigatoriedade: Obrigatório
<samlp:StatusCode>
Obrigatoriedade: Obrigatório
Igual à especificação AuthnResponse.
108
11.1.6.12 Exemplo de resposta ao pedido de fecho de sessão
<saml2p:LogoutResponse
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:fa="http://autenticacao.cartaodecidadao.pt/atributos"
ID="_f171c8a1-0616-421b-9fbf-34be422c414f"
InResponseTo="_49800585-b491-46d3-b8c8-efc743eccd52"
Version="2.0"
IssueInstant="2011-02-08T17:51:17.7593424Z"
Destination="http://www.serviceProvider"
Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:Issuer>http://www.ServiceProvider.pt/</saml2:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_f171c8a1-0616-421b-9fbf-34be422c414f">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-
signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>cX/NPb/aoCOcUK+4GOPwsndZ5rE=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...signatureValue...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...x509Data...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<saml2p:Status>
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
</saml2p:LogoutResponse>
109
12 LISTA DE ATRIBUTOS DISPONÍVEIS
A lista atualizada de atributos é distribuída em conjunto com este documento. Deverá consultar
documento Atributos_Atualizados_Autenticação Gov_Produção.xlsx.
110
13 REFERÊNCIAS
1. STORK Consortium. STORK Framework - D5.8.1 Technical design. Stork eId - Secure Identity
Across Borders Linked. [Online] September 8, 2009. https://www.eid-stork.eu/.
2. OASIS Consortium. Assertions and Protocols for the OASIS Security Assertion Markup
Languange (SAML) v2.0. OASIS - Organization for the Advancement of Structured Information Standards.
[Online] March 2005. http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf.
3. —. Security Assertion Markup Language (SAML) v2.0. OASIS - Organization for the Advancement
of Structured Information Standards. [Online] March de 2005. http://www.oasis-
open.org/specs/index.php#saml.
4. W3C Consortium. XML Signature Syntax and Processing (Second Edition) - W3C
Recommendation 10 June 2008. W3C - World Wide Web Consortium. [Online] June 10, 2009.
http://www.w3.org/TR/xmldsig-core/.
5. —. XML Encryption Syntax and Processing. W3C - World Wide Web Consortium. [Online] 2 de
December de 2002. http://www.w3.org/TR/xmlenc-core/.
111