Este tutorial apresentará os procedimentos necessários para instalar o SimpleSAML e criar uma aplicação básica que utilize a autenticação Shibboleth para realizar a identificação básica de um usuário. Os procedimentos são os seguintes: istalação do SimpleSAML; configuração do SimpleSAML para Federação UFRGS-Teste; e exemplo de Aplicação PHP integrada com o SimpleSAML. Os comandos apresentados no roteiro presumem que a instalação é feita em um servidor Linux onde há possibilidade de acesso shell.
servidor.ufrgs.br
Será considerado a utilização das seguintes pastas:
2. Descompacte o arquivo e renomeie a pasta criada para ss-aplicacao
.
3. É necessário criar um certificado SSL e uma chave privada. Para isso, execute os seguintes passos:tar -zxvf simplesamlphp-1.6.1.tar.gz
mv simplesamlphp-1.6.1 ss-aplicacao
3.1. Crie o arquivo /tmp/openssl.cnf
com o conteúdo a seguir:
[ req ]
default_bits = 2048 # Size of keys
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
# Variable name Prompt string
#---------------------- ----------------------------------
0.organizationName = Nome da universidade/organização
organizationalUnitName = Departamento da universidade/organização
emailAddress = Endereço de email da administração
emailAddress_max = 40
localityName = Nome do município (por extenso)
stateOrProvinceName = Unidade da Federação (por extenso)
countryName = Nome do país (código de 2 letras)
countryName_min = 2
countryName_max = 2
commonName = Nome completo do host (incluíndo o domínio)
commonName_max = 64
# Default values for the above, for consistency and less typing.
# Variable name Value
#------------------------------ ------------------------------
0.organizationName_default = UFRGS - Universidade Federal do Rio Grande do Sul
# Obs.: o valor de organizationalUnitName_default pode ser modificado, para indicar quem é o provedor do serviço
organizationalUnitName_default = UFRGS - Universidade Federal do Rio Grande do Sul
localityName_default = Porto Alegre
stateOrProvinceName_default = Rio Grande do Sul
countryName_default = BR
commonName_default = $HOSTNAME_FULL
3.2. Execute os seguintes comandos:
openssl genrsa 2048 -config /tmp/openssl.cnf > simplesaml.key
openssl req -new -x509 -nodes -days 1095 -sha1 -key simplesaml.key -set_serial 00 -config /tmp/openssl.cnf > simplesaml.crt
openssl pkcs12 -export -in simplesaml.crt -inkey simplesaml.key -out simplesaml.p12 -name simplesaml -caname selfsigned
3.3. Mova os arquivos simplesaml.key
; simplesaml.crt
e simplesaml.p12
para a pasta ss-aplicacao/cer
t
4. Edite o arquivo de configuração disponível em ss-aplicacao/config/config.php
e altere as seguintes entradas:
ss-aplicacao/www/
Administrador
suporte@instituicao.br
en
America/Sao_Paulo
tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo
servidor.ufrgs.br/ss-aplicacao
. Se a instalação ocorreu com sucesso, uma tela similar a Figura 1 deverá ser exibida.
1. Faça a configuração dos parâmetros do SP. Para tanto edite o arquivo ss-aplicacao/config/authsources.php
e substitua o conteúdo do referido arquivo pelas linhas a seguir:
<?php
$config = array (
'admin' => array(
'core:AdminPassword',
),
'default-sp' => array(
'saml:SP',
'privatekey' => 'simplesaml.key',
'certificate' => 'simplesaml.crt',
'entityID' => 'https://$HOSTNAME_FULL/caminho/ss-aplicacao',
'idp' => 'https://login.teste.ufrgs.br/idp/shibboleth',
),
);
2. O arquivo ss-aplicacao/metadata/saml20-idp-remote.php
contém informações relativas ao IdP que será utilizado pelo SimpleSAML. Substitua o conteúdo do arquivo pelas linhas a seguir:
<?php
$metadata['https://login.teste.ufrgs.br/idp/shibboleth'] = array(
'name' => array(
'en' => 'UFRGS',
'pt-BR' => 'UFRGS',
),
'description' => 'Servidor de autenticação da UFRGS - Teste',
'SingleSignOnService' => 'https://login.teste.ufrgs.br/idp/profile/SAML2/Redirect/SSO',
'certFingerprint' => 'EA9D6546BF3D1C3DE84D945993516D3E26B39FD8'
);
3. Para obter os metadados do SimpleSAML para adiciona-los a Federação, acesse o SimpleSAML e clique na aba Federation
e depois na opção Show Metadata
. Os metadados estão presentes na caixa de texto In SAML 2.0 Metadata XML format
.4. É importante ressaltar que o SimpleSAML apenas estará integrado a Federação uma vez que seus metadados (obtidos no passo anterior) estejam inclusos no arquivo de metadados da Federação. Para tanto, envie os metadados para: foscarini@cpd.ufrgs.br
5. Após copiar os metadados é fortemente recomendável o bloqueio do acesso às páginas do SimpleSAML, para tanto, crie o arquivo .htaccess
na raiz da pasta ss-aplicacao
. O conteúdo deste arquivo deverá ser:
Voltar ao sumário
Order deny,allow
deny from all
<Files module.php>
Order allow,deny
Allow from all
</Files>
index.php
que deverá ficar na pasta aplicacao
<?php
define("UID", 'urn:oid:0.9.2342.19200300.100.1.1');
define("CN", 'urn:oid:2.5.4.3');
define("MAIL", 'urn:oid:0.9.2342.19200300.100.1.3');
define("UFRGSVINCULO", 'urn:oid:1.3.6.1.4.1.12619.200.1.1.15');
require_once('../ss-aplicacao/lib/_autoload.php');
//define que deve ser utilizada a autenticacao shibboleth
$as = new SimpleSAML_Auth_Simple('default-sp');
//obriga que a pagina abaixo somente seja executada por um usuário autenticado
$as->requireAuth();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h2>Exemplo de Aplicação PHP+SimpleSAML</h2>
<?php
//real utilizaçao dos valores obtidos na autenticação:
//Cria um array de atributos
$attributes = $as->getAttributes();
//imprime os atributos
print(htmlspecialchars( "uid: " . $attributes[UID][0]) . "<br>");
print(htmlspecialchars( "cn: " . $attributes[CN][0]) . "<br>");
print(htmlspecialchars( "mail: " . $attributes[MAIL][0]) . "<br>");
for ($i=0; $i<count($attributes[UFRGSVINCULO]); $i++)
print(htmlspecialchars( "ufrgsVinculo ". $i .": " . $attributes[UFRGSVINCULO][$i]) . "<br>");
?>
<br>
</body>
</html>
A aplicação demonstrada ao longo deste tutorial está acessivel através do endereço http://sp.ufrgs.br/aplicacao/ (abre em nova janela).99999999
que refere-se a um usuário fictício e que está presente apenas no LDAP de testes.
O campo uid
corresponde ao número do cartão do usuário que está autenticando.
O campo cn
contém o nome completo do usuário, normalmente em caixa alta.
O campo mail
contém o endereço de e-mail do usuário que está cadastrado no portal de serviços. Quando da alteração do e-mail, o novo endereço estará disponível no proximo login do usuário, dessa forma indicamos sempre atualizar o endereço de e-mail a cada login caso ele seja armazenado localmente.
O campo ufrgsVinculo
retorna uma string que é constituída pelos seguintes elementos:
Esta nomenclatura foi definida pelo CPD da UFRGS e deve ser utilizada quando os dados forem exibidos. O CPD se reserva a modificar qualquer um dos campos textuais, portando apenas os dados vindos da autenticação devem ser utilizados para exibição. Este é um dos motivos pelo qual não é recomendado armazenar estes dados locamente para consultas futuras.estadoVinculo:codVinculo:nomeVinculo:codOrgaoExercicio:nomeOrgaoExercicio:codOrgaoLotacao:nomeOrgaoLotacao:codCurso:nomeCurso:dataIngresso:dataAfastamento