Este tutorial apresenta um exemplo de aplicação que utiliza a autenticação federada (Shibboleth) para realizar a identificação de um usuário.
index.php identifica se o usuário está autenticado. Caso não esteja, o usuário é informado que para fazer a autenticação deve clicar em um botão.
index.php com a variável autenticar definida.
autenticar está definida, o index.php exige a autenticação (linha $as->requireAuth()) e redireciona o usuário para a página de autenticação da UFRGS.
index.php.
index.php ao identificar que o usuário está autenticado, exibe os atributos retornados após a autenticação.
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-portal-teste-simplesaml/lib/_autoload.php');
//define que deve ser utilizada a autenticacao shibboleth
$as = new SimpleSAML_Auth_Simple('default-sp');
if (isset($_POST[autenticar])) {
$as->requireAuth();
}
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<TITLE>Portal Teste SimpleSAML XYZ</TITLE>
</HEAD>
<BODY>
<FONT FACE="Vedana">
<H1>Bem Vindo ao Portal Teste SimpleSAML</H1>
<EM>Atualização: 07/07/2011</EM><BR>
<HR>
<H2>Acesso Federação UFRGS-TESTE</H2>
<?php
$attributes = $as->getAttributes();
if (empty($attributes[UID][0])) {
?>
Você não está autenticado na Federação UFRGS-TESTE!<br>
Clique no botão a seguir para efetuar login<br>
<form id="form1" name="form1" method="post" action="index-new.php">
<input name="autenticar" type="hidden" id="autenticar">
<input type="submit" value="UFRGS-TESTE">
</form>
<?php
}
else {
print(htmlspecialchars( "Olá " . $attributes[CN][0] . "!" ) ."<br><br>" );
print(htmlspecialchars( "Tu estás logado na Federação UFRGS-TESTE.") . "<br>" );
print(htmlspecialchars( "Teus atributos são os seguintes:" ) . "<br><br>" );
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>");
}
?>
</FONT>
</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