Fornecedor de Serviço SimpleSAMLphp 1.19 em CentOS 8

O SimpleSAMLphp é uma implementação simples do SAML 2.0 em PHP nativo (suportado por Linux, UNIX, Mac OSX, Windows) e permite a configuração de ambos e componentes “Identity Provider” e “Service Provider”. A configuração “Identity Provider SimpleSAMLphp” permite realizar a autenticação (LDAP, Mysql, Radius) e comunicar com Shibboleth SP’s ou SAML2.0 SP’s.

Nesta página vamos explicar como instalar um IDP SimpleSAMLphp 1.19 em CentOS 8 integrado com uma Active Directory.

Pré-Requisitos

Para instalar o IDP SimpleSAMLphp 1.19 é necessário também:

  • Apache HTTP com mod-ssl: Servidor Aplicacional Web que desempenha as funções de frontend do Identity Provider.
  • OpenSSL: Para concretizar funcionalidades de SSL e garantir a privacidade dos dados. Também utilizada na criação de certificados.
  • NTP: Sincronização de relógio do servidor. É essencial que um Identity Provider mantenha o relógio sincronizado, as mensagens de SAML incluem timestamps que são verificados pelos Fornecedores de Serviços (SP's). Quando o atraso é superior a 5min as mensagens são recusadas e os utilizadores impedidos de aceder.
  • PHP version >= 7.2 e Extensões
    • Obrigatórias: date, dom, hash, libxml, openssl, pcre, SPL, zlib, json, mbstring
    • Quando a autenticação é realizada através de um servidor de LDAP: ldap
    • Quando a informação de sessões é realizada através de um servidor de memcache: memcache
    • Quando são utilizadas base de dados:
      • Obrigatório: PDO
      • Driver da Base de Dados: (mysql, pgsql, ...)

Instalação e configuração do PHP

Para utilizar a versão 7.4.12 é necessário a instalação do repositório utilizando os seguintes comandos:

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Assegurar que o repositório REMI está instalado no sistema operativo.

shell> dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Validar que o repositório REMI-PHP70 está ativo para que seja possível instalar a aversão de PHP desejada.

shell> dnf module install php:remi-7.4

Validar se está Enabled editando o ficheiro /etc/yum.repos.d/remi-php70.repo

shell> sudo yum module reset php
shell> sudo yum module enable php:remi-7.4

Deve ser definido o timezone de Portugal no ficheiro de /etc/php.ini

date.timezone = Europe/Lisbon

Deve ser definido o timezone de Portugal no ficheiro de /etc/php.ini

memory_limit = 512M

Para instalar as extensões, execute o comando seguinte:

shell> yum install mod_ssl php-mcrypt php-xml php-pdo php-mbstring php-ldap php-cli php-json php-bcmath php-gd

Instalação do SimpleSAMLphp

Instalar a ferramenta wget para ser possível efetuar o download do pacote de SimpleSAMLphp

shell> yum –y install wget

Para obter a versão mais recente do SimpleSAMLphp e o colocar na pasta /var execute os seguintes comandos:

shell> cd /var/www
shell> wget https://simplesamlphp.org/download?latest -O simplesamlphp-latest.tar

Este comando vai realizar o download do ficheiro comprimido que contem a versão mais recente do SimpleSAMLphp.

Para extrair o conteúdo do ficheiro executar o seguinte comando:

shell> tar zxf simplesamlphp-latest.tar

Visualizar a pasta:

shell> ls -la | grep simplesamlphp

drwxr-xr-x  30 root root    4096 Nov  4 12:15 simplesamlphp-1.19.0-rc1

Realizar um simbolic link para a pasta de simplesamlphp

shell> ln -s /var/www/simplesamlphp-1.19.0-rc1 /var/www/simplesamlphp

Certificados SSL

Devem ser criados dois certificados SSL com o objetivo de preservar a confidencialidade dos dados utilizados na comunicação entre o Fornecedor de Serviço (SP), Fornecedor de Identidade (IDP) e o browser do cliente.

O Servidor Web (Apache) deve gerir as suas próprias chaves e certificados para estabelecer ligações TLS/SSL com o browser do cliente. Apesar de tecnicamente possível que o SimpleSAMLphp utilize o mesmo par de chaves e certificados do Web Server para comunicar com os Fornecedores de Serviço, não é recomendado que sejam utilizados os mesmos por razões de segurança. Devem ser gerados dois certificados:

  • Certificado para o virtual Host do Web Server Apache

sp-lab-simplesaml.fccn.pt (Utilizada na configuração do Virtual Host)

  • Certificado para o Service Provider SimpleSAMLphp

sp_simplesaml.key (Utilizada nas configurações e metadados do IdP)

Certificados para o Frontend

Por se tratar de um componente de autenticação da instituição é recomendado que sejam utilizados certificados de servidor EV - Extended Validation (adicionar link para o equivalente de https://confluence.fccn.pt/display/tcs/Pedir+Certificado+de+Servidor+-+SSL).

Aceder à pasta dos certificados por defeito e criar o csr:

shell> cd /etc/pki/tls/certs

Criar o CSR para realizar o pedido de certificado:

shell> openssl req -new -newkey rsa:2048 -nodes -out sp_lab_simplesaml_fccn_pt.csr -keyout sp_lab_simplesaml_fccn_pt.key -subj "/C=PT/ST=Lisboa/L=Lisboa/O=FCCN/CN=sp-lab-simplesaml.fccn.pt"

Adaptar o comando alterando a seguinte informação:

  • O = code>Deve corresponder ao nome da vossa Organização em Protocolo TCS
  • CN = Deve corresponder ao hostname do vosso IDP
  • Nomes dos ficheiros sp_lab_simplesaml_fccn_pt.csr e sp_lab_simplesaml_fccn_pt.key de acordo com o hostname do vosso service provider.

Realizar pedido do certificado à Sectigo

Aceder ao Portal da Sectigo e realizar o pedido do certificado. Após emitido o certificado no portal deve gravar certificados da seguinte forma:

  • Grave a chave privada (ex.: sp_lab_simplesaml_fccn_pt.key) na diretoria /etc/pki/tls/private

  • Grave os certificados sp_lab_simplesaml_fccn_pt_interm.cer e sp_lab_simplesaml_fccn_pt.cer na diretoria /etc/pki/tls/certs/.

Para validar o conteúdo do certificado gerado:

shell> openssl x509 -in /etc/pki/tls/certs/sp_lab_simplesaml_fccn_pt.cer  -text -noout

Para obter o Fingerprint do certificado:

shell> openssl x509 -in /etc/pki/tls/certs/sp_lab_simplesaml_fccn_pt.cer -fingerprint -sha1 -noout

Configuração do Apache

Adicionar a configuração do VirtualHost para o IdP através da criação do ficheiro /etc/httpd/conf.d/sp-lab-simplesaml.fccn.pt.conf:

<VirtualHost sp-lab-simplesaml.fccn.pt:443>

    ServerName sp-lab-simplesaml.fccn.pt
    ServerAdmin  suporte-sp-lab@fccn.pt

    LogLevel warn

    ErrorLog /var/log/httpd/sp-lab-simplesaml-error.log
    CustomLog /var/log/httpd/sp-lab-simplesaml-access.log combined
    SSLEngine on

    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!DSS

    SSLHonorCipherOrder on
    SSLCompression off

    SSLCertificateKeyFile /etc/pki/tls/private/sp_lab_simplesaml_fccn_pt.key
    SSLCertificateFile /etc/pki/tls/certs/sp_lab_simplesaml_fccn_pt.crt
    SSLCertificateChainFile /etc/pki/tls/certs/DigiCertCA.crt

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule  .* https://%{SERVER_NAME}/simplesaml [R,L]

    Alias /simplesaml /var/www/simplesamlphp/www/
    <Directory /var/www/simplesamlphp/www/>
        Require all granted
        RewriteEngine On
        RewriteBase /simplesaml
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
    </Directory>

</VirtualHost>

No ficheiro /etc/httpd/conf/httpd.conf, Adicione o seguintes :

ServerTokens Prod
ServerSignature off

Configure o redireccionamento para https de pedidos http

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Validar as configurações com os seguintes comandos esperando que o resultado do seja Syntax OK.

shell> apachectl configtest

Após as configurações necessita de realizar um restart do serviço apache:

shell> systemctl restart httpd.service

Configuração do SimpleSAMLphp

No ficheiro /var/www/simplesamlphp/config/config.php encontram-se as configurações base do SimpleSAML. Neste ficheiro de configuração deve realizar um conjunto de alterações:

Definir a informação do contacto técnico, este contacto fica disponível no ficheiro de metadados gerado pelo SimpleSAMLphp. Na ocorrência de erros, o SimpleSAMLphp envia automaticamente informação de erros para este contacto.

Alterar esta configuração para o contacto de suporte AAI da vossa instituição.

    'technicalcontact_name' => 'RCTSaai Team',
    'technicalcontact_email' => 'suporte@rctsaai.pt',

Alterar a informação de timezone para ‘Europe/Lisbon’.

    'timezone' => 'Europe/Lisbon',

Definir um salt secreto na linha ‘secretsalt’, que deve ser uma sequência de caracteres gerada aleatoriamente. O SimpleSAMLphp usa este sal para criar hashes seguras. Para gerar um novo valor para o secretsalt podem utilizar também o comando: openssl rand -base64 32.

    'secretsalt' => ' +EXblpuGxqJNn6VdtGuIeiwP5U5Gjn6wgEAAVjvGFJY=',

Defina a password de administrador na linha 'auth.adminpassword' e substitua o valor padrão de 123 por uma password segura. Esta password define o acesso a algumas das páginas de instalação do SimpleSAMLphp:

  'auth.adminpassword' => 'ALTERAR_PASSWORD',

O acesso ao interface de administrador é realizado através do endereço https://<hostname do serviço> /simplesaml Para a instalação deste tutorial o acesso é realizado no seguinte url:

  https://sp-lab-simplesaml.fccn.pt/simplesaml/

Aceder à opção “Login as administrator” e utilize a password definida no ficheiro de configuração config.php.

Interface de Instalação SimpleSAMLphp

O acesso a esta interface é realizado no endereço https:///simplesaml Para a instalação deste tutorial o acesso é realizado no seguinte url:

Utilizar a opção “Login as administrator” e utilize a password definida no ficheiro de configuração config.php.

interface_ssphp1.png Figura 1 – Interface de administração do SimplesamlPHP

Para garantir que a instalação PHP cumpre os requisitos necessário para execução do SimpleSAMLphp seja executado, selecione a Tab de Configuration e verifique a informação disponível no link Checking your PHP installation.

interface_ssphp2.png Figura 2 – Interface de verificação da instalação do PHP para o SimpleSAMLPHP

Configuração de Metadados do Service Provider

Nesta secção vamos explicar como configurar os metadados do Service Provider.

Configuração de Metadados do IDP PROXY RCTSaai

O simpleSAMLphp permite a atualização periódica de metadados de forma automática através dos seguintes módulos:

  • CRON: O módulo cron percorre todos os módulos ativos e executa as tarefas necessárias existentes no seguinte diretório de cada módulo: /var/www/simplesamlphp/modules/<nome_modulo>/hooks/hooks_cron.php

  • METAREFRESH: O módulo metarefresh é responsável por criar o(s) ficheiro(s) de metadados com base na configuração existente no ficheiro config-metarefresh.php.

Configuração do Módulo CRON

Passo I – Ativar o Módulo CRON

shell> cd /var/www/simplesamlphp/modules/cron
shell> touch enable
shell> cp config-templates/*.php ../../config/

Passo II - Configurar o modulo

shell> cd /var/www/simplesamlphp/config
shell> vi module_cron.php

Editar o ficheiro /var/www/simplesamlphp/config/module_cron.php:

<?php
/*
 * Configuration for the Cron module.
 */

$config = [
    'key' => '<ALTERAR A SECRET>',
    'allowed_tags' => ['daily', 'hourly', 'frequent'],
    'debug_message' => true,
    'sendemail' => false,
];

Utilizar o comando openssl rand -base64 32 para gerar uma nova ‘key’.

Passo III – Adicionar comandos do módulo na “crontab”

Aceder ao url https://<hostname_do_serviço>/simplesaml/module.php/cron/croninfo.php:

interface_ssphp3.png Figura 3 – Sugestões de comandos para a CRON

Copiar as sugestões e adicionar na crontab.

shell> crontab –e 

Adicionar as sugestões

# Run cron: [daily]
02 0 * * * curl --silent "https://<hostname_do_serviço>/simplesaml/module.php/cron/run/daily/<your_cron_key> " > /dev/null 2>&1
# Run cron: [hourly]
01 * * * * curl --silent "https://< hostname_do_serviço>/simplesaml/module.php/cron/run/hourly/<your_cron_key> " > /dev/null 2>&1
# Run cron: [frequent]
XXXXXXXXXX curl --silent "https://<hostname_do_serviço >/simplesaml/module.php/cron/run/frequent/<your_cron_key> " > /dev/null 2>&1

Configuração do Módulo METAREFRESH

Passo I – Ativar o módulo metarefresh

shell> cd /var/www/simplesamlphp/modules/metarefresh
shell> touch enable
shell> cp config-templates/*.php ../../config/

Passo II - Configurar o modulo

shell> cd /var/www/simplesamlphp/config
shell> vi config-metarefresh.php

Editar o ficheiro /var/www/simplesamlphp/config/config-metarefresh.php:

<?php

$config = [

    'sets' => [

        'rctsaaiproxy' => [
            'cron' => ['hourly'],
            'sources' => [
                [
                    'src' => 'https://engine.rctsaai.pt/authentication/idp/metadata',
                    'certificates' => [
                        'rctsaaiproxy.pem',
                    ],
                    'validateFingerprint' => 'A0:A0:1D:11:F3:18:45:7F:64:A3:81:95:04:A5:36:EF:56:1C:35:AA',
                ],
            ],
            'expireAfter' => 34560060, // Maximum 4 days cache time (3600*24*4)
            'outputDir' => 'metadata/rctsaaiproxy/',

            /*
             * Which output format the metadata should be saved as.
             * Can be 'flatfile' or 'serialize'. 'flatfile' is the default.
             */
            'outputFormat' => 'flatfile',

        ],
    ],
];

Criar ficheiro rctsaaiproxy.pem na pasta /var/www/simplesamlphp/cert. Este certificado é utilizado para validar a assinatura do ficheiro de metadados do IDP PROXY.

shell> cd /var/www/simplesamlphp/cert
shell> vi rctsaaiproxy.pem

-----BEGIN CERTIFICATE-----
MIIDUjCCAjqgAwIBAgIJAM9pHTgQ3tvxMA0GCSqGSIb3DQEBCwUAMFQxCzAJBgNV
BAYTAlBUMQ0wCwYDVQQKDARGQ0NOMRMwEQYDVQQDDApyY3RzYWFpLnB0MSEwHwYJ
KoZIhvcNAQkBFhJzdXBvcnRlQHJjdHNhYWkucHQwHhcNMTcxMTI5MTY0MzE2WhcN
MjAxMTI4MTY0MzE2WjBUMQswCQYDVQQGEwJQVDENMAsGA1UECgwERkNDTjETMBEG
A1UEAwwKcmN0c2FhaS5wdDEhMB8GCSqGSIb3DQEJARYSc3Vwb3J0ZUByY3RzYWFp
LnB0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyEEvZyOHanTRDSSI
wNfQR2856A4rZ3hmkSiiZfW3VXL7agnWJWZDBTNS98nhsfMBYLaA30o2Ryka53I8
VEgMRj3u8A0RSy19Lk5FYHSqys3izxDOrJ2lMCDqTX/ZnLF0c4JAjN2T1MoUG7I9
aZkieFCwZJ3rfP/m5zx0jfYIlgyWsAZxYyKf8IGTIMMJZmBOZWGuw1PDBZc6iWYh
67XyF6d6GXPP1T+hhCdgDdljY6kjOe1iC/xyYlugkAYt6A8EL0DcJ69UTzPLR01m
b88V0s6P3oJv6NauAocv9S5Wt4KzRFolMz+OCZhSKkDzElg8GVl9NQe1ExW7pRke
6gAuawIDAQABoycwJTAjBgNVHREEHDAaggpyY3RzYWFpLnB0ggwqLnJjdHNhYWku
cHQwDQYJKoZIhvcNAQELBQADggEBAKoex0H61mm+xiVK9fWNxi9YcQbnGsyuERbH
FkIHyeJtzUa/jKVmPLIlqX1otOQ0gYZHUG4rClWv/FYlsKhUFasm0Sih588rb+z1
sKWE/DRrE3NZH/0dP3kNn6UKjWiOKMVb4+A6E3/wGrFB2+rfrI7dkZZD9AHUpCDU
Wksr2ZamIOq8r0ByLn8Lxl+ngURxC7Bb4uNSwBocXMQjnaccokiLG6EwsyydX3h/
DNDFhRAd3KIm/rgO8tT2O2TU+bRGGci5GeLdfq/jim7R8/KHqU3vvWUV0Vv7K+9t
v8b2IAn4bUvr6OVRB3M47taGCWhzbsC9SQxmfiDFZUyqt81a5sQ=
-----END CERTIFICATE-----

Na pasta /var/www/simplesamlphp/metadata podemos encontrar os ficheiros que identificam os componentes locais e remotos considerados de confiança à federação. O módulo metarefresh está configurado para realizar o download da metadata do IDP PROXY e registar a mesma na pasta /var/www/simplesamlphp/metadata/rctsaaiproxy.

Criar a pasta /var/www/simplesamlphp/metadata/rctsaaiproxy para armazenar o ficheiro de metadados do IDP PROXY.

shell> cd /var/www/simplesamlphp/metadata
shell> mkdir rctsaaiproxy
shell> cd rctsaaiproxy
shell> chown apache:apache .
shell> chmod 755 .

Para que o SimpleSAMLphp considere esta pasta como fonte de metadados é ainda necessário adicionar ao ficheiro de configuração geral /var/www/simplesamlphp/config/config.php a seguinte configuração:

shell> vi /var/www/simplesamlphp/config/config.php

'metadata.sources' => [
        ['type' => 'flatfile'],
        ['type' => 'flatfile', 'directory' => 'metadata/rctsaaiproxy'],
    ],

Configuração do Service Provider

As configurações do Service Provider são realizadas no ficheiro authsources.php existente na pasta /var/www/simplesamlphp/config.

Para configurar um serviço é necessário adicionar ao array de $config um novo elemento default-sp. Este novo elemento é também um array que suporta a configuração do service provider, a saber:

  • entityID: Neste elemento pode definir o entityID do serviço. Caso mantenha o valor a NULL o EntityID assume o seguinte url por omissão:

    • https://<hostname_do_serviço>/simplesaml/module.php/saml/sp/metadata.php/default-sp
  • idp: Este elemento identifica o EntityID do Fornecedor de Identidade que o serviço utiliza para realizar a autenticação. Para a federação RCTSaai o valor corresponde ao EntityId do IDP do PROXY (https://engine.rctsaai.pt/authentication/idp/metadata).

  • Certificados do SP: Os certificados do service provider utilizados para assinar as mensagens SAML são configurados através dos elementos

    'certificate' => 'sp.crt',
    'privatekey'  => 'sp.key',
    'privatekey_pass' => '<your_secret_key>',

Para gerar o sp.csr e sp.key utilize o seguinte comando:

shell> openssl req -new -newkey rsa:2048 -nodes -out sp.csr -keyout sp.key -subj "/C=PT/ST=Lisboa/L=Lisboa/O=FCCN/CN=sp-lab-simplesaml.fccn.pt"

Adaptar o comando alterando a seguinte informação:

  • O = <Deve corresponder ao nome da vossa Organização em Protocolo TCS>
  • CN =

O certificado, por ser para utilização de metadadso, pode ser auto-assinado. Para gerar um certificado auto-assinado utilize o seguinte comando:

shell> openssl x509 –req –days 354 –in sp.csr –signkey sp.key –out sp.crt
  • Mapear Atributos

Os atributos provenientes do Fornecedor de Identidade, encontram-se identificados por oid’s de acordo com o esquema utilizado, nomeadamente eduPerson e Shach. A lista de atributos utilizados pela RCTSaai (Nome - OID):

  • givenName - 2.5.4.42
  • sn - 2.5.4.4
  • cn - 2.5.4.3
  • displayName - 2.16.840.1.113730.3.1.241
  • eduPersonAffiliation - 1.3.6.1.4.1.5923.1.1.1.1
  • eduPersonPrimaryAffiliation - 1.3.6.1.4.1.5923.1.1.1.5
  • eduPersonScopedAffiliation - 1.3.6.1.4.1.5923.1.1.1.9
  • eduPersonEntitlement - 1.3.6.1.4.1.5923.1.1.1.7
  • mail - 0.9.2342.19200300.100.1.3
  • eduPersonPrincipalName - 1.3.6.1.4.1.5923.1.1.1.6
  • eduPersonTargetId - 1.3.6.1.4.1.5923.1.1.1.10
  • uid - 0.9.2342.19200300.100.1.1
  • o - 2.5.4.10
  • ou - 2.5.4.11
  • schacHomeOrganization - 1.3.6.1.4.1.25178.1.2.9

Para mapear os atributos com os nomes (‘mail’, ‘givenName’, etc.) o SimpleSAMLphp recorre aos “Authentication Processing Filters”. Este tipo de filtros permite que sejam executados vários tipos de ações, tais como, criar, verificar, mapear e/ou adaptar atributos. O SimpleSAMLphp inclui na sua distribuição vários filtros, nesta secção apenas é abordado o core:AttributeMap.

A configuração existente no elemento 'authproc' permite adicionar um ou mais filtros de diferentes tipos. O índice do filtro (ex.:50) corresponde à ordem pela qual são executados. A execução é realizada por ordem crescente.

          'authproc' => [

  50 => [
        'class' => 'core:AttributeMap', 'oid2name',
  ],

      ],

O exemplo acima efetua o mapeamento automático dos oid’s com base nos nomes, utilizando o ficheiro de mapeamento que se encontra na seguinte localização:

/var/www/simplesamlphp/attributemap/name2oid.php

Edite o ficheiro /var/www/simplesamlphp/config/authsources.php:

<?php
$config = [
    // An authentication source which can authenticate against both SAML 2.0
    // and Shibboleth 1.3 IdPs.
    'default-sp' => [
        'saml:SP',

        // The entity ID of this SP.
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.
        'entityID' => null,

        // The entity ID of the IdP this SP should contact.
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.
        'idp' => 'https://engine.rctsaai.pt/authentication/idp/metadata',

        // The URL to the discovery service.
        // Can be NULL/unset, in which case a builtin discovery service will be used.
        'discoURL' => null,
        'certificate' => 'sp.crt',
        'privatekey'  => 'sp.key',
        'privatekey_pass' => '<your_secret_key>',
        'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
        'NameIDPolicy' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',

         'authproc' => [

  50 => [
        'class' => 'core:AttributeMap', 'oid2name',
  ],

      ],
    ],

… 
];

Ao ficheiro /var/www/simplesamlphp/modules/saml/lib/Message.php alterar linha 312 para:

$key = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);

Ao ficheiro /var/www/simplesamlphp-1.19.0-rc1/vendor/simplesamlphp/saml2/src/SAML2/EncryptedAssertion.php adicionar o seguinte na linha 86:

case XMLSecurityKey::AES128_GCM:
case XMLSecurityKey::AES192_GCM:
case XMLSecurityKey::AES256_GCM:

Ao ficheiro /var/www/simplesamlphp-1.19.0-rc1/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php alterar linha 154 para:

$this->cryptParams['keysize'] = 16;

E a linha 163 para:

$this->cryptParams['keysize'] = 24;

Proteger o Serviço (aplicação PHP)

Para proteger o serviço é necessário integrar as funções da API do SimpleSAML no respetivo ficheiro index.php. Estas funções permitem-nos avaliar a existência de uma autenticação, obter os atributos e realizar as condições de autorização com base nos atributos recebidos.

Exemplo de código PHP:

<?php
  require_once('/var/www/simplesamlphp/lib/_autoload.php');

  $as = new SimpleSAML_Auth_Simple('default-sp');
  $as->requireAuth();
  $attributes = $as->getAttributes();
?>
<html>
<head><title>My First Service Provider in PHP</title></head>
<body>
<h1>My First SP</h1>
<p>Hello world!</p>

<h2>Your attributes:</h2>
<pre><?php print_r($attributes); ?></pre>
</body></html>

Integrar serviço na RCTSaai

interface_ssphp4.png Figura 4 – Janela com federações onde o SP está inscrito

Para adicionar o Service Provider no ficheiro de metadados da federação RCTSaai é necessário aceder à Tab Federation e selecionar o link Show metadata referente ao serviço. Para que o “Service Provider” seja reconhecido na federação RCTSaai é necessário:
  • Realize uma cópia do conteúdo do ficheiro https:///simplesaml/module.php/sp/metadata.php/default-sp.
  • Enviar por email para rctsaai@fccn.pt