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://
Utilizar a opção “Login as administrator” e utilize a password definida no ficheiro de configuração config.php.
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.
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:
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
Figura 4 – Janela com federações onde o SP está inscrito
- 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