UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
APLICAÇÃO PRÁTICA DE UM SISTEMA DE GERENCIAMENTO DE
IDENTIDADES
Área de Redes de Computadores e Segurança
por
André Siqueira de Cordova
Carla Merkle Westphall, Dra.
Orientadora
Itajaí (SC), dezembro de 2006
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
APLICAÇÃO PRÁTICA DE UM SISTEMA DE GERENCIAMENTO DE
IDENTIDADES
Área de Redes de Computadores e Segurança
por
André Siqueira de Cordova
Relatório apresentado à Banca Examinadora do
Trabalho de Conclusão do Curso de Ciência da
Computação para análise e aprovação.
Orientadora: Carla Merkle Westphall, Dra.
Itajaí (SC), dezembro de 2006
DEDICATÓRIA
A meus pais e verdadeiros amigos,
Raulino e Margarete.
Aos meus queridos padrinhos de batismo,
Sérgio e Stela.
ii
AGRADECIMENTOS
A Deus pela vida, saúde e dons concedidos para que eu pudesse alcançar meus objetivos;
Aos meus pais, Raulino e Margarete, e a família pela educação e valores que me ensinaram;
A minha namorada, amiga e companheira Mauren, pela paciência e apoio para realização deste
trabalho;
A minha orientadora Profª. Carla pela motivação, ensinamentos e disponibilidade oferecida;
A banca examinadora, Prof. Gilberto, Prof. Fabrício, Sr. Neto e Sr. Rubens, pelos conselhos,
interesse e pelos elogios; e
A todos os amigos que contribuíram de alguma forma para que eu concluísse este trabalho.
iii
SUMÁRIO
LISTA DE ABREVIATURAS..................................................................vi
LISTA DE FIGURAS..............................................................................viii
LISTA DE TABELAS ...............................................................................xi
RESUMO...................................................................................................xii
ABSTRACT..............................................................................................xiii
1 INTRODUÇÃO ...................................................................................... 1
1.1 PROBLEMATIZAÇÃO................................................................................... 2
1.1.1 Formulação do Problema .............................................................................. 2
1.1.2 Solução Proposta ............................................................................................ 2
1.2 OBJETIVOS ..................................................................................................... 3
1.2.1 Objetivo Geral................................................................................................ 3
1.2.2 Objetivos Específicos...................................................................................... 3
1.3 METODOLOGIA............................................................................................. 3
1.4 ESTRUTURA DO TRABALHO ..................................................................... 5
2 FUNDAMENTAÇÃO TEÓRICA ........................................................ 6
2.1 CONCEITOS FUNDAMENTAIS SOBRE SEGURANÇA
COMPUTACIONAL NA INTERNET ................................................................... 6
2.1.1 Vulnerabilidade.............................................................................................. 7
2.1.2 Ameaça ........................................................................................................... 7
2.1.3 Ataque............................................................................................................. 8
2.1.4 Política de Segurança ..................................................................................... 9
2.1.5 Autenticação ................................................................................................. 10
2.1.6 Criptografia.................................................................................................. 11
2.1.7 Assinatura Digital ........................................................................................ 12
2.1.8 Certificado Digital........................................................................................ 14
2.1.9 Controle de Acesso ....................................................................................... 14
2.2 GERENCIAMENTO DE IDENTIDADES ................................................... 15
2.2.1 Conceitos Básicos ......................................................................................... 15
2.2.2 Atores............................................................................................................ 16
2.2.3 Aplicações do IMS........................................................................................ 17
2.2.4 Principais Requisitos.................................................................................... 18
2.2.5 Mecanismos .................................................................................................. 19
2.3 SHIBBOLETH................................................................................................ 22
2.3.1 Conceitos Básicos ......................................................................................... 22
2.3.2 Características.............................................................................................. 23
2.3.3 Federação...................................................................................................... 24
2.3.4 Provedor de Identidade ............................................................................... 24
iv
2.3.5 WAYF ........................................................................................................... 27
2.3.6 Provedor de Serviço ..................................................................................... 27
2.3.7 Segurança ..................................................................................................... 28
2.3.8 Aplicações ..................................................................................................... 29
2.3.9 Sessões........................................................................................................... 29
2.3.10 Funcionamento............................................................................................. 30
2.3.11 Aplicação Prática ......................................................................................... 32
2.3.12 Trabalhos Relacionados............................................................................... 45
3 PROJETO ............................................................................................. 47
3.1 CENÁRIO DA APLICAÇÃO........................................................................ 47
3.2 COMPONENTES ADICIONAIS .................................................................. 49
3.3 TECNOLOGIAS PARA IMPLEMENTAÇÃO............................................ 52
4 DESENVOLVIMENTO ...................................................................... 55
4.1 IMPLEMENTAÇÃO DA FEDERAÇÃO ..................................................... 55
4.1.1 Servidor Provedor de Identidade ................................................................ 56
4.1.2 Servidor Provedor de Serviço...................................................................... 83
4.1.3 Servidor WAYF ........................................................................................... 93
4.2 IMPLEMENTAÇÃO DA APLICAÇÃO ...................................................... 98
4.2.1 Funcionamento da Aplicação ...................................................................... 99
4.2.2 Telas da Aplicação ..................................................................................... 100
5 CONSIDERAÇÕES FINAIS ............................................................107
REFERÊNCIAS BIBLIOGRÁFICAS .................................................109
A ARQUIVO DE METADATA ...........................................................114
B LOGS DO SERVIDOR PROVEDOR DE IDENTIDADE............118
B.1. LOG DO APACHE ...................................................................................... 118
B.2. LOG DO SHIBBOLETH ............................................................................. 119
B.3. LOG DO SHIBBOLETH ............................................................................. 119
C LOGS DO SERVIDOR PROVEDOR DE SERVIÇO ...................122
C.1. LOG DO APACHE ...................................................................................... 122
C.2. LOG DO SHIBBOLETH ............................................................................. 122
C.3. LOG DO SHIBBOLETH ............................................................................. 123
D LOG DO SERVIDOR WAYF ..........................................................124
D.1. LOG DO APACHE ...................................................................................... 124
I LISTA DE APLICAÇÕES E SERVIÇOS QUE UTILIZAM O
SHIBBOLETH........................................................................................126
II SAML SCHEMA DE CONFIRMAÇÃO DE AUTENTICAÇÃO
DO USUÁRIO .........................................................................................130
v
LISTA DE ABREVIATURAS
AA
AAP
AC
ACL
ACS
ADFS
API
AR
ARP
CGI
DDoS
DNS
HS
HTTP
IAMSECT
ICPP/ULD
ID
IdP
IEEE
IIS
IMA
IMS
IP
JAR
JDBC
JDK
JK
JNDI
LDAP
MAC
MACE
MITM
NDSL
OASIS
PC
PDA
PHP
PKI
PRIME
RAM
RM
RPM
SAML
ShARPE
Attribute Authority
Attribute Acceptance Policies
Autoridade Certificadora
Access Control List
Assertion Consumer Service
Active Directory Federation Services
Application Programming Interface
Attribute Requester
Attribute Release Policies
Common Gateway Interface
Distributed Denial of Service
Domain Name System
Handle Service
HyperText Transfer Protocol
Inter-institutional Authorisation Management to Support E-learning with
reference to Clinical Teaching
Independent Centre for Privacy Protection/Unabhängiges Landeszentrum
Für Datenschutz Schleswig
Identificador
Identity Provider
Institute of Electrical and Electronics Engineers
Internet Information Server
Identity Management Application
Identity Management System
Internet Protocol
Java Archive
Java Database Connectivity
Java 2 Standard Edition Development Kit
Jakarta Tomcat Connector
Java Naming and Directory Interface
Lightweight Directory Access Protocol
Media Access Control
Middleware Architecture Committee for Education
Main In The Middle
National Science Digital Library
Organization for the Advancement of Structured Information Standards
Personal Computer
Personal Digital Assistant
Hypertext Preprocessor
Public Key Infrastructure
Privacy and Identity Management for Europe
Random Access Memory
Resource Manager
Red Hat Package Manager
Security Assertion Markup Language
Shibboleth Attribute Release Policy Editor
vi
SNG
SP
SQL
SSL
SSO
TCC
TCP/IP
UFJF
UFMG
UFPA
UFV
UNISC
UNIVALI
URL
WAR
WAYF
WebISO
XML
Studio Notarile Genghini
Service Provider
Structured Query Language
Secure Socket Layer
Single Sign-On
Trabalho de Conclusão de Curso
Transmission Control Protocol/Internet Protocol
Universidade Federal de Juiz de Fora
Universidade Federal de Minas Gerais
Universidade Federal do Pará
Universidade Federal de Viçosa
Universidade de Santa Cruz do Sul
Universidade do Vale do Itajaí
Universal Resource Locator
Web Archive File
Where Are You From
Web Initial Sign-On
Extensible Markup Language
vii
LISTA DE FIGURAS
Figura 1. Formas de Ataques em Sistemas .......................................................................................9
Figura 2. Processo de criptografia assimétrica utilizando função hashing.......................................13
Figura 3. Processo de criptografia assimétrica em mensagem recebida ..........................................13
Figura 4. Atores em um IMS – Um Modelo Abstrato.....................................................................16
Figura 5. Uso de credenciais em um IMS.......................................................................................21
Figura 6. Diagrama de Fluxo do Sistema Shibboleth......................................................................31
Figura 7. Requisição ao Recurso Protegido por Shibboleth ............................................................34
Figura 8. Serviço WAYF...............................................................................................................35
Figura 9. Requisição ao Provedor de Identidade ............................................................................36
Figura 10. Pedido para Autenticação no Provedor de Identidade....................................................37
Figura 11. Entrada da Credencial...................................................................................................38
Figura 12. Redirecionando para o Recurso Solicitado ....................................................................39
Figura 13. Recurso Solicitado pelo Usuário ...................................................................................40
Figura 14. Requisição ao Recurso Protegido por Shibboleth ..........................................................41
Figura 15. Conexão Segura no Provedor de Identidade ..................................................................42
Figura 16. Entrada da Credencial...................................................................................................43
Figura 17. Redirecionando para o Recurso Solicitado ....................................................................44
Figura 18. Recurso Protegido por Shibboleth.................................................................................45
Figura 19. Federação InBrazil........................................................................................................48
Figura 20. Ambiente Shibboleth Completo ....................................................................................49
Figura 21. Interação entre Componentes Shibboleth ......................................................................52
Figura 22. Servidores da federação InBrazil...................................................................................56
Figura 23. Infra-estrutura e funcionamento do servidor provedor de identidade .............................58
Figura 24. Procedimento para gerar as chaves privada e pública ....................................................59
Figura 25. Procedimentos de instalação do software Apache .........................................................59
Figura 26. Parâmetros do software OpenSSL adicionados ao arquivo httpd.conf ...........................60
Figura 27. Parâmetros alterados no arquivo ssl.conf.......................................................................60
Figura 28. Procedimento de instalação do software PHP................................................................60
Figura 29. Parâmetros do software PHP alterados no arquivo httpd.conf........................................61
Figura 30. Parâmetros do softtware CGI alterados no arquivo httpd.conf .......................................61
Figura 31. Procedimento de instalação do software Tomcat ...........................................................61
Figura 32. Procedimento de instalação do software JDK................................................................62
Figura 33. Procedimentos de instalação do software Ant ...............................................................62
Figura 34. Procedimentos de instalação do software Jakarta Tomcat Connector.............................62
Figura 35. Arquivo workers.properties...........................................................................................63
Figura 36. Parâmetros do software JK adicionados ao arquivo httpd.conf ......................................63
Figura 37. Parâmetros do software JK alterados no arquivo server.xml..........................................63
Figura 38. Procedimento de instalação do software Oracle Berkeley DB .......................................64
Figura 39. Procedimento inicial de instalação do software Shibboleth IdP .....................................64
Figura 40. Procedimento de instalação do software Shibboleth IdP................................................64
Figura 41. Localização dos arquivos de configuração do software Shibboleth IdP .........................64
Figura 42. Localização do arquivo WAR do software Shibboleth IdP ............................................65
Figura 43. Configuração da tag IdPConfig no arquivo idp.xml ......................................................66
Figura 44. Configuração das tags do arquivo idp.xml ....................................................................66
Figura 45. Arquivo arp.site.xml .....................................................................................................67
Figura 46. Configuração das tags do arquivo resolver.xml.............................................................68
viii
Figura 47. Parâmetro adicionado ao arquivo httpd.conf .................................................................68
Figura 48. Parâmetros adicionados ao arquivo ssl.conf ..................................................................68
Figura 49. Instalação do Pubcookie ...............................................................................................69
Figura 50. Arquivo config do Pubcookie .......................................................................................70
Figura 51. Parâmetros do Pubcookie adicionados no arquivo httpd.conf ........................................70
Figura 52. Parâmetro do Pubcookie adicionado ao arquivo ssl.conf ...............................................70
Figura 53. Procedimento de instalação do OpenLDAP...................................................................71
Figura 54. Arquivo slapd.conf do OpenLDAP ...............................................................................72
Figura 55. Arquivo ldap.conf do OpenLDAP.................................................................................72
Figura 56. Arquivo primeironivel.ldif ............................................................................................72
Figura 57. Procedimento de importação do arquivo primeironivel.ldif ...........................................73
Figura 58. Procedimento de instalação do PHPLDAPADMIN.......................................................73
Figura 59. Parâmetros alterados no arquivo config.php..................................................................73
Figura 60. Tela de autenticação do PHPLDAPADMIN..................................................................74
Figura 61. Tela de criação do grupo inbrazil ..................................................................................74
Figura 62. Tela de criação do usuário “andre.cordova” ..................................................................75
Figura 63. Tela de criação dos atributos do usuário “andre.cordova” .............................................76
Figura 64. Procedimento de instalação do ShARPE .......................................................................77
Figura 65. Configurações adicionadas no arquivo resolver.xml......................................................78
Figura 66. Parâmetros do ShARPE adicionados ao arquivo httpd.conf...........................................78
Figura 67. Tela do componente SPDescription ..............................................................................79
Figura 68. Tela de upload do componente ShARPE.......................................................................80
Figura 69. Tela dos contratos do componente ShARPE .................................................................81
Figura 70. Tela do componente Autograph, liberando um atributo .................................................82
Figura 71. Tela do componente Autograph, bloqueando um atributo..............................................83
Figura 72. Infra-estrutura e funcionamento do servidor provedor de serviço ..................................85
Figura 73. Procedimento para gerar as chaves privada e pública ....................................................86
Figura 74. Procedimento de instalação do software Apache ...........................................................86
Figura 75. Parâmetros do software OpenSSL adicionados ao arquivo httpd.conf ...........................86
Figura 76. Parâmetros alterados no arquivo ssl.conf.......................................................................86
Figura 77. Procedimento de instalação do software PHP................................................................87
Figura 78. Parâmetros do software PHP alterados no arquivo httpd.conf........................................87
Figura 79. Procedimento de instalação do software MySQL ..........................................................87
Figura 80. Procedimentos de configuração do software MySQL ....................................................88
Figura 81. Procedimento de instalação do software Shibboleth SP.................................................88
Figura 82. Localização dos arquivos de configuração do software Shibboleth SP ..........................89
Figura 83. Configuração da tag Host no arquivo shibboleth.xml....................................................89
Figura 84. Configuração da tag Site no arquivo shibboleth.xml .....................................................89
Figura 85. Configuração das tags no arquivo shibboleth.xml .........................................................90
Figura 86. Configuração das tags Path no arquivo shibboleth.xml .................................................90
Figura 87. Arquivo AAP.xml.........................................................................................................91
Figura 88. Parâmetro adicionado ao arquivo httpd.conf .................................................................91
Figura 89. Parâmetro adicionado no arquivo httpd.conf .................................................................92
Figura 90. Parâmetro adicionado no arquivo httpd.conf .................................................................92
Figura 91. Função “verificaFiliacao” do RM da aplicação protegida pelo Shibboleth.....................93
Figura 92. Infra-estrutura e funcionamento do servidor WAYF .....................................................94
Figura 93. Procedimento para gerar as chaves privada e pública ....................................................95
Figura 94. Procedimentos de instalação do software Apache .........................................................95
Figura 95. Parâmetros do software OpenSSL adicionados ao arquivo httpd.conf ...........................96
ix
Figura 96. Parâmetros alterados no arquivo ssl.conf.......................................................................96
Figura 97. Procedimento de instalação do software PHP................................................................96
Figura 98. Parâmetros do software PHP alterados no arquivo httpd.conf........................................97
Figura 99. Procedimento de instalação do software WAYF ...........................................................97
Figura 100. Variável configurada no arquivo IDProvider.conf.php ................................................98
Figura 101. Variáveis configuradas no arquivo config.php ............................................................98
Figura 102. Tela inicial da Aplicação Básica InBrazil..................................................................101
Figura 103. Tela de Download de documentos.............................................................................101
Figura 104. Tela do componente WAYF SWITCHaai .................................................................102
Figura 105. Tela de autenticação Pubcookie ................................................................................103
Figura 106. Tela de troca de informações de autenticação e autorização ......................................103
Figura 107. Tela de Upload – AuthZ Appl....................................................................................104
Figura 108. Tela de Upload – AuthZ Shib ....................................................................................104
Figura 109. Tela de autenticação Pubcookie ................................................................................105
Figura 110. Tela de troca de informações de autenticação e autorização ......................................105
Figura 111. Tela de Upload .........................................................................................................106
Figura 112. Arquivo inbrazil-metadata.xml .................................................................................117
Figura 113. Arquivo apache_ssl.log.............................................................................................118
Figura 114. Arquivo shib-access.log ............................................................................................119
Figura 115. Arquivo shib-error.log ..............................................................................................121
Figura 116. Arquivo apache_ssl.log.............................................................................................122
Figura 117. Arquivo shibd.log .....................................................................................................122
Figura 118. Arquivo transaction.log.............................................................................................123
Figura 119. Arquivo apache_ssl.log.............................................................................................124
x
LISTA DE TABELAS
Tabela 1. Softwares do servidor provedor de identidade ................................................................57
Tabela 2. Softwares do servidor provedor de serviço .....................................................................84
Tabela 3. Softwares do servidor WAYF ........................................................................................94
xi
RESUMO
CORDOVA, André Siqueira de. Aplicação Prática de um Sistema de Gerenciamento de
Identidades. Itajaí, 2006. 145 f. Trabalho de Conclusão de Curso (Graduação em Ciência da
Computação)–Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí,
Itajaí, 2006.
A identidade digital representa eletronicamente as informações de indivíduos e organizações. Na
Internet estas informações tornam-se públicas e podem ser reveladas por indivíduos não
autorizados, exceto se empregadas em conjunto com mecanismos de controle e de segurança. O
gerenciamento de identidades é um dos sistemas que agrupa estes mecanismos e os aplica nas
informações sensíveis dos indivíduos. Por se tratar de uma infra-estrutura complexa, deve ser
aplicada com embasamento em pesquisas e estudos que envolvam desde a teoria até a aplicação
prática. Através do conhecimento teórico adquirido, será montada uma infra-estrutura completa de
gerenciamento de identidades que mostre a sua aplicação e eficiência. O sistema de gerenciamento
de identidades escolhido para compor uma parte desta infra-estrutura foi o Shibboleth, um sistema
de código livre que fornece componentes e regras para compor o controle das identidades e
segurança dos recursos web. Outras ferramentas serão incorporadas ao Shibboleth, tais como, o
mecanismo de autenticação Pubcookie e o serviço de diretórios OpenLDAP, a fim de completar a
infra-estrutura necessária para aplicação prática do sistema.
Palavras-chave: Gerenciamento de Identidades. Segurança. Controle.
xii
ABSTRACT
Electronically, the digital identity represents the information of individuals and organizations. On
the Internet these information could be public and could be show up by not authorized individuals,
except if used which security and control mechanisms. The identity management is one of the
systems that group these mechanisms and it applies them in the sensible information of the
individuals. It the meaning with a complex infrastructure it must be applied with research basement
and studies that involve since the theory until the practical application. In such as way, through the
theoretical knowledge acquired, to mount a complete infrastructure of management of identity that
shows up to this application and efficiency. The system of management of identity was picked out to
compose a part of this infrastructure it was Shibboleth, a kind of open source system that supplies
to components and rules to compose the control of the identity and security web resource. Other
implements will be incorporated on Shibboleth, such as: Pubcookie the mechanism of
authentication and the OpenLDAP, the service of directories, to complete the necessary
infrastructure for practical application of the system.
Keywords: Identity Management. Security. Control.
xiii
1 INTRODUÇÃO
O uso de sistemas de gerenciamento de identidades cresce a cada dia e vem ocupando
espaço no mundo dos negócios digitais. As empresas precisam gerenciar acessos às aplicações em
um grande número de sistemas computacionais, sem comprometer a segurança e expor as
informações confidenciais.
Um dos propósitos do sistema de gerenciamento de identidades é controlar as informações
dos usuários de forma segura. Os usuários ao se autenticarem uma única vez no sistema, podem
utilizar vários serviços dentro de um ou vários ambientes parceiros. Estes ambientes precisam estar
protegidos por uma federação. As federações são grupos de organizações que estabelecem a
confiança entre si, para cooperarem nos negócios de forma segura, mantendo responsabilidades
definidas. Certas situações fazem com que uma identidade digital permaneça anônima, ou seja,
verifica-se a identidade de um usuário, mas a única informação que deve ser transferida é a sua
validação (REINERT, 2005).
A identidade digital representa eletronicamente as informações sensíveis de um indivíduo ou
organização (DAMIANI; VIMERCATI e SAMARATI, 2003). Um sistema que gerencia
identidades deve ser confiável.
O Shibboleth é um projeto da Internet2 e do MACE (Middleware Architecture Committee
for Education) e tem como um de seus objetivos a proteção de recursos web através do controle de
acesso (SHIBBOLETH, 2006). Observando dados comparativos entre alguns sistemas de
gerenciamento de identidades, foi escolhido o Shibboleth, um sistema de código livre que tem como
principal função o gerenciamento de acesso a recursos baseado nos atributos dos usuários. Estes
atributos são buscados no site de origem através de componentes da arquitetura do Shibboleth. A
autenticação é feita diretamente na instituição detentora do registro dos usuários. Um serviço da
arquitetura Shibboleth é responsável em verificar se o usuário já está autenticado, solicitando que o
mesmo se autentique caso não esteja (REINERT, 2005).
Outras soluções, além do Shibboleth, já foram propostas para resolver o problema do
gerenciamento de identidades (DAMIANI; VIMERCATI e SAMARATI, 2003). São soluções
baseadas em infra-estruturas de chave pública, modelo Passport da Microsoft (MICROSOFT, 2006)
e o modelo do projeto Liberty (PFITZMANN e WAIDNER, 2003).
Este tema de pesquisa possui relevância e importância atual já que faz parte do estado da
arte no assunto de segurança e controle de acesso em sistemas distribuídos, comprovado pelas
publicações na área (BUELL e SANDHU, 2003), (DAMIANI; VIMERCATI e SAMARATI,
2003), (PFITZMANN e WAIDNER, 2003). Na literatura científica, o tema ainda é recente
(ZHANG et al. 2005) e o mercado para produtos de gerência de identidades aumentará
expressivamente nos próximos anos (NETWORKWORLD, 2006).
A utilização dos sistemas de gerenciamento de identidades pode ser observada por meio de
vários aplicativos que suportam a interoperabilidade com o sistema de gerenciamento de
identidades Shibboleth. Como exemplo destes aplicativos pode-se citar: as bibliotecas digitais
ScienceDirect e NSDL (National Science Digital Library), o sistema de e-learning WebAssign, a
ferramenta para escrita colaborativa Twiki e os aplicativos educacionais Blackboard
(SHIBBOLETH, 2006).
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
A Internet mudou a forma de uso dos sistemas computacionais - as informações trafegam
em uma rede pública - o que torna possível a revelação destas informações por partes não
autorizadas. Nas informações estão presentes as identidades dos usuários, ou seja, as suas
informações sensíveis que precisam trafegar na rede para que obtenham acesso aos sistemas.
Normalmente, nos sistemas utilizados, cada aplicação precisa ter um mecanismo de
autorização e autenticação para gerenciar o acesso dos usuários. Desta forma, o número de senhas
de acesso aumenta com o crescimento do número das aplicações, o que acaba prejudicando o
controle e a segurança das mesmas. Vale salientar que, quando usuários de uma instituição acessam
recursos de outra instituição, a instituição que está provendo os recursos precisa gerenciar as
identidades de todos os usuários, porém, quando o número de usuários é muito grande, a dificuldade
para gerenciar estas identidades aumenta significativamente.
1.1.2 Solução Proposta
Esta proposta pretende contribuir no processo de implementação de um sistema de
gerenciamento de identidades, visando aumentar a segurança das informações sensíveis dos
2
usuários, bem como minimizar a quantidade de autenticações necessárias para obter acesso aos
sistemas.
Dessa forma, a proposta deste trabalho é a implementação de uma infra-estrutura de
gerenciamento de identidades Shibboleth que além de realizar o gerenciamento das identidades, irá
controlar o acesso aos recursos.
Nesse contexto, propõe-se também o desenvolvimento de uma aplicação que em conjunto
com a infra-estrutura de gerenciamento de identidades, demonstre o funcionamento prático do
sistema Shibboleth.
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral deste trabalho é a aplicação prática do sistema de gerenciamento de
identidades, designado Shibboleth.
1.2.2 Objetivos Específicos
Os objetivos específicos desse trabalho são:
•
Descrever conceitos básicos de segurança computacional na Internet;
•
Relatar conceitos de gerenciamento de identidades;
•
Relatar pesquisas científicas que estão sendo desenvolvidas nesse assunto;
•
Realizar testes com o Shibboleth, instalar e apresentar um exemplo de demonstração;
•
Formular a modelagem de um cenário para aplicar o sistema de gerenciamento de
identidades Shibboleth; e
•
Documentar e divulgar os resultados do trabalho desenvolvido.
1.3 Metodologia
A metodologia utilizada no desenvolvimento deste projeto foi dividida em três grandes
etapas: (i) estudo; (ii) projeto; e (iii) desenvolvimento.
3
A etapa de estudo foi destinada à pesquisa e interpretação dos conceitos de segurança
computacional na Internet e de gerenciamento de identidades. Na fundamentação teórica a pesquisa
foi realizada em livros na área de segurança computacional e através de artigos publicados pela
IEEE (Institute of Electrical and Electronics Engineers).
Ainda na etapa de estudo foi explanado o sistema de gerenciamento de identidades
Shibboleth, sendo este o sistema foco do estudo. Foram descritas suas características, principais
componentes e seu funcionamento, além da apresentação dos testes iniciais realizados com o
sistema.
Na etapa de projeto é apresentada uma infra-estrutura completa de sistema de gerenciamento
de identidades Shibboleth. Nesta etapa foram realizadas as tarefas:
•
Introdução: foram explanados os componentes necessários para a construção de uma
infra-estrutura de gerenciamento de identidades Shibboleth;
•
Cenário da Aplicação: para apresentar o cenário de atuação, foi definido o
funcionamento da aplicação a ser modelada e implementada, bem como, as regras e
características da federação;
•
Componentes Adicionais: para compor o ambiente completo do sistema Shibboleth
foram explanadas as ferramentas que serão utilizadas para a composição deste ambiente;
e
•
Tecnologias para Implementação: foram especificadas as tecnologias necessárias para
implementação do projeto e explicados seus conceitos básicos.
Na etapa de desenvolvimento foi realizada a implementação de uma infra-estrutura completa
do sistema de gerenciamento de identidades Shibboleth. Esta etapa foi dividida em duas partes:
•
Implementação da Federação: foram implementados os servidores e softwares
necessários para funcionamento do sistema de gerenciamento de identidades Shibboleth;
e
•
Implementação da Aplicação: foi implementada uma aplicação para demonstrar o
funcionamento do sistema de gerenciamento de identidades Shibboleth.
4
1.4 Estrutura do trabalho
Este projeto está estruturado em 5 capítulos: (1) Introdução; (2) Fundamentação Teórica; (3)
Projeto; (4) Desenvolvimento; e (5) Considerações Finais.
O Capítulo 1 (Introdução) destina-se a contextualizar o projeto sucintamente, descrever o
problema encontrado e a solução proposta, expor os objetivos gerais e específicos a serem atingidos
com o trabalho, e a metodologia utilizada para o desenvolvimento do projeto.
O Capítulo 2 (Fundamentação Teórica) apresenta conceitos necessários e relevantes para o
entendimento da segurança computacional na Internet, gerenciamento de identidades, bem como do
Shibboleth.
O Capítulo 3 (Projeto) mostra todos os componentes necessários para a aplicação prática do
sistema de gerenciamento de identidades Shibboleth e especifica as ferramentas que serão
agregadas a este sistema.
O Capítulo 4 (Desenvolvimento) descreve as etapas necessárias para a implementação da
federação Shibboleth e consequentemente da infra-estrutura de sistema de gerenciamento de
identidades Shibboleth. Além de apresentar a implementação da aplicação protegida pelo sistema de
gerenciamento de identidades Shibboleth.
O Capítulo 5 (Considerações Finais) relaciona o projeto com os objetivos especificados,
bem como as dificuldades encontradas no seu desenvolvimento e expõe os resultados obtidos, além
de identificar melhorias a serem realizadas no sistema com o intuito de dar continuidade ao
trabalho.
5
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo são descritos os principais conceitos envolvidos no gerenciamento de
identidades, tais como, a segurança e controle da identidade, além da aplicação prática do sistema
de gerenciamento de identidades Shibboleth. A Seção 2.1 descreve os tipos de ataques na Internet,
conceitos de vulnerabilidade, autenticação, controle de acesso e o processo de criptografia. A Seção
2.2 descreve os conceitos que envolvem os sistemas de gerenciamento de identidades e suas partes
envolvidas, além de suas aplicações, principais requisitos e mecanismos de funcionamento. A Seção
2.3 destina-se a apresentação do sistema Shibboleth, através da abordagem de suas características,
principais componentes, funcionamento e uma aplicação prática.
2.1 CONCEITOS FUNDAMENTAIS SOBRE SEGURANÇA
COMPUTACIONAL NA INTERNET
A Internet mudou a forma como são utilizados os sistemas computacionais. Devido a estas
mudanças os riscos a privacidade e integridade da informação são muitos. Portanto, é muito
importante que mecanismos de segurança de sistemas computacionais sejam projetados de maneira
a prevenir acessos não autorizados aos recursos e dados destes sistemas.
Um computador ou sistema computacional é dito seguro se este atender a três requisitos
básicos: confidencialidade, integridade e disponibilidade. A confidencialidade define que a
informação só está disponível para aqueles devidamente autorizados. A integridade define que a
informação não é destruída ou corrompida. Já a disponibilidade define que os serviços/recursos do
sistema estão disponíveis sempre que forem necessários (CERT.BR, 2005).
Outros autores, Dias (2000), Sandhu e Samarati (1994) defendem que para uma informação
ser considera segura, o sistema que administra ainda deve respeitar:
•
Autenticidade: Garante que a informação ou o usuário da mesma é autêntico;
•
Não repúdio: Não é possível negar o envio ou recepção de uma informação ou dado;
•
Legalidade: Garante a legalidade jurídica da informação e aderência de um sistema à
legislação;
•
Privacidade: Garante que determinada informação seja restrita; e
•
Auditoria: Rastreabilidade dos diversos passos que um processo realizou ou que uma
informação foi submetida, identificando os participantes, os locais e horários de cada
etapa. Consiste no exame do histórico dos eventos dentro de um sistema para determinar
quando e onde ocorreu uma violação de segurança.
2.1.1 Vulnerabilidade
A grande abrangência da Internet pode resultar em problemas como roteamentos incorretos,
falhas de transmissão, adulteração de dados e falhas de componentes físicos em um grande número
de pontos. Sendo assim, a Internet apresenta muitos pontos vulneráveis que podem ser difíceis de
controlar.
Segundo CERT.BR (2005), “vulnerabilidade é definida como uma falha no projeto,
implementação ou configuração de um software ou sistema operacional que, quando explorada por
um atacante, resulta na violação da segurança de um computador”.
As vulnerabilidades podem resultar na ocorrência de determinados incidentes de segurança.
Conforme descrito em CERT.BR (2005), “um incidente de segurança pode ser definido como
qualquer evento adverso, confirmado ou sob suspeita, relacionado à segurança de sistemas
computacionais ou de redes de computadores”. São exemplos de incidentes de segurança:
•
Tentativas de ganhar acesso não autorizado a sistemas ou dados;
•
Ataques de negação de serviço;
•
Uso ou acesso não autorizado a um sistema;
•
Modificações em um sistema, sem o conhecimento, instruções ou consentimento prévio
do dono do sistema; e
•
Desrespeito à política de segurança de uma empresa ou provedor de acesso.
2.1.2 Ameaça
As ameaças exploram os pontos fracos de um sistema, geralmente relacionados à tecnologia
ou à política de operação. As fraquezas tecnológicas referem-se às deficiências nos produtos de
software e hardware e às falhas no material de comunicação. As fraquezas na política de operação
referem-se às regras definidas para operação dos sistemas de computador. O projeto de um sistema
7
seguro é tão importante quanto uma política de segurança eficiente. A ameaça só é eliminada
quando os dois estão presentes (BERNSTEIN et al. 1997).
A ameaça pode ser definida como qualquer ação, acontecimento ou entidade que possa agir
sobre um ativo, processo ou pessoa, através de uma vulnerabilidade e consequentemente
gerando um determinado impacto. As ameaças apenas existem se houverem
vulnerabilidades, sozinhas pouco fazem (LAUREANO, 2005, p. 15).
Como ressalta Sêmola (2003 apud LAUREANO, 2005), as ameaças podem ser classificadas
quanto a sua intencionalidade e organizadas em grupos. As ameaças naturais são decorrentes de
fenômenos da natureza, como incêndios naturais, enchentes, terremotos e tempestades. As
involuntárias são ameaças inconscientes, quase sempre causadas pelo desconhecimento, mas podem
ser causadas por acidentes, erros e falta de energia. Já as ameaças voluntárias são propositais,
causadas por agentes humanos como crackers, invasores, espiões, ladrões, criadores e
disseminadores de vírus de computador e incendiários.
2.1.3 Ataque
Ataque em um sistema computacional é a tentativa, bem ou mal sucedida, de acesso ou uso
não autorizado a um programa ou computador. Um ataque pode causar diferentes tipos de falhas,
tais como: destruição da informação, modificação ou deturpação, roubo, remoção ou perda,
revelação de informação ou interrupção de serviços (CERT.BR, 2005).
Conforme sustenta Laureano (2005), o fato de um ataque estar acontecendo não significa
que ele terá sucesso. O nível de sucesso depende da vulnerabilidade do sistema ou da eficácia de
contramedidas existentes. As formas possíveis de ataques em sistemas são (Figura 1):
•
Interceptação: considera-se interceptação o acesso às informações por entidades não
autorizadas;
•
Interrupção: pode ser definida como a interrupção do fluxo normal das mensagens ao
destino;
•
Modificação: consiste na modificação de mensagens por entidades não autorizadas; e
•
Personificação: considera-se personificação a entidade que acessa as informações ou
transmite mensagens passando-se por uma entidade autêntica.
8
Figura 1. Formas de Ataques em Sistemas
Fonte: Adaptado de Stallings (2002).
Atualmente, são exemplos de ataques que se propagam com frequência na Internet:
•
DDoS (Distributed Denial of Service – Negação de Serviço Distribuído): um conjunto
de computadores é utilizado para paralisar serviços ou computadores conectados à
Internet; e
•
Engenharia Social ou Pishing: o atacante faz uso da persuasão, muitas vezes prevalece
da ingenuidade ou confiança do usuário para obter informações que podem ser utilizadas
no acesso não autorizado a computadores ou informações.
2.1.4 Política de Segurança
As leis devem ser seguidas para que exista um padrão de conduta considerado adequado às
necessidades da nação e para garantia de seu progresso e harmonia. Da mesma forma deve ocorrer
em uma empresa. São necessárias regras que estabeleçam princípios de como a organização irá
proteger, controlar e monitorar as informações manipuladas pelos sistemas computacionais e redes
de computadores.
A política de segurança atribui direitos e responsabilidades às pessoas que lidam com os
recursos computacionais de uma instituição e com as informações neles armazenados. Ela também
9
define as atribuições de cada um em relação à segurança dos recursos com os quais trabalham, bem
como as penalidades às quais estão sujeitos aqueles que não cumprirem a política (CERT.BR,
2005).
A política de segurança é um mecanismo preventivo de proteção dos dados e processos
importantes de uma organização, define um padrão de segurança a ser seguido pelo corpo técnico,
corpo gerencial e pelos usuários (DIAS, 2000).
Segundo Laureano (2005), uma política de segurança atende a vários propósitos:
•
Descreve o que está sendo protegido e por quê;
•
Define prioridades sobre o que precisa ser protegido em primeiro lugar e qual o custo;
•
Permite estabelecer um acordo explícito com várias partes da empresa em relação ao
valor da segurança;
•
Fornece ao departamento de segurança um motivo válido para dizer “não” quando
necessário; e
•
Proporciona ao departamento de segurança a autoridade necessária para serem
cumpridos os propósitos.
2.1.5 Autenticação
Os serviços de autenticação são elementos fundamentais em qualquer sistema de segurança
na Internet. As entidades que se comunicam na Internet devem ter alguma forma de verificar com
quem estão trocando informações. Estas entidades podem ser pessoas que operam sistemas
computacionais ou dois computadores que se comunicam através de um processo automático.
A autenticação é o meio para obter a certeza de que o usuário ou o objeto remoto é
realmente quem está afirmando ser. É um serviço essencial de segurança, pois uma
autenticação confiável assegura o controle de acesso, determina quem está autorizado a ter
acesso à informação, permite trilhas de auditoria e assegura a legitimidade do acesso
(LAUREANO, 2005, p. 20).
De acordo com Dias (2000), os processos de autenticação estão baseados em três métodos:
•
Identificação positiva (o que você sabe): Na qual o requerente demonstra conhecimento
de alguma informação utilizada no processo de autenticação; por exemplo, uma senha;
10
•
Identificação proprietária (o que você tem): Na qual o requerente demonstra possuir algo
a ser utilizado no processo de autenticação; como um cartão magnético; e
•
Identificação biométrica (o que você é): Na qual o requerente exibe alguma
característica própria, tal como a sua impressão digital.
Uma autenticação não segura está relacionada à solicitação de senhas que não utilizam
método de criptografia. Estas senhas podem se tornar um risco devido à interceptação de terceiros
ou até mesmo do próprio host, - se este for mal intencionado -, que por sua vez terá as informações
necessárias para utilizar a identidade do usuário em qualquer lugar da rede (MICROSOFT
TECHNET, 2004).
2.1.6 Criptografia
Informações que precisam viajar por meio de canais públicos, por exemplo, a Internet,
podem ser protegidos pela criptografia. A criptografia é a transformação de qualquer forma de
informação (texto, vídeo ou gráficos) em uma representação não legível para qualquer pessoa sem
chave de criptografia (ALBERTIN, 2001).
A criptografia caracteriza-se por transformar uma mensagem em uma forma cifrada ou em
um código para que pessoas não autorizadas não tenham acesso à leitura da informação transmitida.
A criptografia faz parte de um campo de estudos que trata de comunicações secretas usadas para:
autenticar a identidade de usuários; autenticar e proteger o sigilo de comunicações pessoais,
transações comerciais e bancárias; e proteger a integridade de transferências eletrônicas de fundos
(CERT.BR, 2005).
Uma mensagem codificada por um método de criptografia deve ser confidencial, ou seja,
somente aquele que envia e aquele que recebe terão acesso ao conteúdo da mensagem. A mensagem
pode ser assinada para garantir que esta não tenha sido modificada e que o remetente seja autêntico
(REINERT, 2005).
Existem dois métodos de criptografia: criptografia simétrica e criptografia assimétrica. A
criptografia simétrica ou de chave única envolve o uso de uma chave tanto para cifrar quanto para
decifrar, isto é, a chave é compartilhada entre a origem e o destino. O ciframento de uma mensagem
baseia-se em dois componentes: um algoritmo e uma chave. Um algoritmo é uma transformação
matemática, ele converte uma mensagem em uma mensagem cifrada e vice-versa. A chave é uma
11
cadeia aleatória de bits utilizada em conjunto com o algoritmo. Cada chave distinta faz com que o
algoritmo trabalhe de forma diferente. Já a criptografia assimétrica ou de chave pública e privada
está baseada no conceito de par de chaves: uma chave privada e uma chave pública. Qualquer uma
delas é utilizada para cifrar uma mensagem e a outra para decifrá-la. As mensagens cifradas com
uma das chaves do par só podem ser decifradas com a outra chave correspondente. A chave privada
deve ser mantida secreta, enquanto a chave pública fica disponível para qualquer interessado. Como
a chave pública está disponível livremente, não há necessidade de compartilhamento de chaves,
como é feito no método simétrico (MAIA, 1999).
2.1.7 Assinatura Digital
Um outro benefício da criptografia assimétrica é a assinatura digital, que permite garantir a
autenticidade de quem envia a mensagem, associada à integridade do seu conteúdo.
A assinatura digital consiste na criação de um código, através da utilização de uma chave
privada, de modo que a pessoa ou entidade que receber uma mensagem contendo este código, possa
verificar se o remetente é mesmo quem diz ser (MAIA, 1999).
Na assinatura digital é inadequado cifrar toda a mensagem ou documento a ser assinado
digitalmente, devido ao tempo gasto na criptografia utilizando chave assimétrica. Neste caso, é
empregada uma função hashing, que gera um valor pequeno (chamado digest ou valor hash), um
resumo de tamanho fixo, derivado da mensagem que se pretende assinar. Assim, a função hashing
oferece agilidade nas assinaturas digitais, além de integridade confiável.
Cifrar um resumo da mensagem com a chave privada do remetente é chamado de assinatura
digital. O remetente irá cifrar um resumo da mensagem com sua chave privada e enviar juntamente
com a mensagem a ser lida (Figura 2). Ao receber a mensagem, o destinatário deverá utilizar a
chave pública do remetente para decifrar o resumo assinado. Além da veracidade do remetente, o
destinatário poderá verificar a integridade da mensagem e neste caso aplicará a função hashing na
mensagem recebida. Se ambos os resumos forem idênticos, o destinatário terá certeza que o
remetente da mensagem foi realmente o esperado e que a mensagem não foi modificada (Figura 3).
12
Figura 2. Processo de criptografia assimétrica utilizando função hashing
Fonte: Adaptado de Maia (1999).
Figura 3. Processo de criptografia assimétrica em mensagem recebida
Fonte: Adaptado de Maia (1999).
13
2.1.8 Certificado Digital
A garantia sobre a veracidade das informações contidas em uma chave pública, é obtida
através do certificado digital.
De acordo com CERT.BR (2005), “o certificado digital é um arquivo eletrônico que contém
dados de uma pessoa ou instituição, utilizados para comprovar sua identidade”. Tais certificados
consistem em chaves públicas assinadas por uma terceira parte confiável, conhecida como AC
(Autoridade Certificadora). A autoridade certificadora faz a emissão destes certificados e garante
que as informações contidas neles sejam válidas.
Segundo CERT.BR (2005), existem diversos tipos de certificados:
•
Certificados de AC: utilizados para validar outros certificados; são auto-assinados ou
assinados por outra AC;
•
Certificados de servidor: utilizados para identificar um servidor seguro; contém o nome
da organização e o nome DNS (Domain Name System) do servidor;
•
Certificados pessoais: contém nome do portador e eventualmente informações como
endereço eletrônico, endereço postal, etc; e
•
Certificados de desenvolvedores de software: utilizados para validar assinaturas
associadas a programas.
2.1.9 Controle de Acesso
O controle de acesso é um conjunto de medidas e procedimentos adotados pela organização
ou utilizados pelos softwares. O objetivo é proteger os dados, programas e sistemas contra
tentativas de acesso não autorizadas feitas por usuários ou outros programas (LAUREANO, 2005).
Os mecanismos de controle de acesso fazem o controle das permissões que um determinado
usuário ou objeto tem sobre o sistema. A ACL (Access Control List – Lista de Controle de Acesso)
é o mecanismo que cria uma lista para cada objeto ou recurso do sistema, com a identificação do
usuário ou processo e suas permissões para aquele objeto específico. A capability é o mecanismo
que cria uma lista para cada usuário ou processo, com a identificação do objeto e as permissões que
o usuário ou processo possuem sobre este objeto especifico (LAUREANO, 2005).
14
2.2 GERENCIAMENTO DE IDENTIDADES
Os conceitos de gerenciamento de identidades estudados e descritos nessa seção foram
retirados da fonte Reinert (2005), ICPP/ULD e SNG (2003).
2.2.1 Conceitos Básicos
O gerenciamento de identidades vem ocupando espaço no mundo dos negócios digitais,
proporciona a redução de custos, controle de gerenciamento, eficiência operacional e
principalmente o crescimento dos negócios.
O grande desafio do gerenciamento de identidades é controlar as informações de forma
segura quando o número de usuários for grande e disperso. Com um sistema de gerenciamento de
identidades, os usuários ao se autenticarem uma única vez, conseguem utilizar diferentes tipos de
serviços com regras de proteção distintas.
Nesse contexto, o sistema de gerenciamento de identidades trata da autenticação e
autorização de usuários, bem como da criação de federações entre organizações. Estas federações
são grupos que estabelecem a confiança entre si, para cooperarem nos negócios de forma segura e
manter responsabilidades definidas.
Uma identidade, de um ponto de vista técnico, está relacionada a um ID (Identificador),
pode ser um nome ou uma sequência de números. Alguns exemplos de identificadores: endereço
MAC (Media Access Control); endereço IP (Internet Protocol); e cookies (identifica computadores
ou usuários).
Uma IMA (Identity Management Application – Aplicação de Gerenciamento de
Identidades) tem como objetivo gerenciar o fluxo de dados após autenticação, além disso, pode
ajudar a firmar direitos de privacidade, solicitar políticas de privacidade e requerer acessos.
Um IMS (Identity Management System – Sistema de Gerenciamento de Identidades)
abrange uma infra-estrutura dentro de uma ou entre várias organizações que estabelecem a
confiança entre si para gerenciar identidades. O IMS trabalha com o tratamento de comunicação
anônima e assinaturas digitais para autenticação. Faz o gerenciamento do acesso aos atributos de
uma identidade digital, controla quais atributos serão concedidos para uma organização ou um
usuário. Consiste no gerenciamento de informações pessoais armazenadas em algum banco de
15
dados. Um IMS descreve toda a infra-estrutura necessária para que as aplicações de gerenciamento
de identidades sejam executadas e coordenadas.
2.2.2 Atores
Os atores envolvidos em um sistema de gerenciamento de identidades são:
•
Usuário (indivíduo ou empresa): é quem irá utilizar os serviços web. Os usuários
necessitam de anonimato e pseudônimos que devem ser certificados por uma terceira
parte;
•
Provedor de Serviço: são parceiros de comunicação que interagem com outras
organizações. Quando usuários acessam determinados serviços na web, os provedores de
serviços precisam suportar o gerenciamento de identidades desses usuários. Por
exemplo, oferecendo informações que podem ser relevantes para a escolha de identidade
dos usuários, assim como políticas de privacidade ou informações do contexto.
•
Provedor de IMS: é constituído de terceiras partes (por exemplo, uma infra-estrutura de
chave assimétrica e uma autoridade certificadora) que fornecem serviços certificados
para a autenticação segura dos usuários. A Figura 4 ilustra a interação entre os três
atores:
Figura 4. Atores em um IMS – Um Modelo Abstrato
Fonte: Adaptado de ICPP/ULD e SNG (2003).
16
2.2.3 Aplicações do IMS
O IMS atua em vários ramos de transações eletrônicas. Entre elas, são citados o Ecommerce, E-government e o E-health.
O E-commerce divide-se em alguns subgrupos. Os principais são:
•
E-shopping: uma transação de compra e venda é realizada entre um comprador e um
vendedor. O IMS garante o anonimato do comprador, que por sua vez dispõe de
informações sigilosas quando do ato de pagamento da mercadoria, tais como, número de
conta, endereço e cartão de crédito. Para tais transações, o cliente pode utilizar-se de
diferentes pseudônimos: um para a consulta aos produtos; outro para o vendedor
consultar a reputação do comprador para ter certeza que o pagamento será efetuado;
outro para efetuar a transferência de valores; e finalmente um para a entrega do produto.
Quanto à privacidade, é preservado o perfil e o anonimato do cliente. Quanto à lei, são
coletadas evidências digitais necessárias em caso de roubo de identidade, reputação,
garantia e entregas erradas.
•
E-auction (leilão eletrônico): abrange os seguintes atores: comprador, leiloeiro e
vendedor. São utilizados quatro pseudônimos. O primeiro relaciona o comprador com o
leiloeiro e possivelmente uma terceira parte que por sua vez, preserva a identidade do
comprador enquanto ele estiver liderando o leilão. O segundo relaciona o comprador
com o vendedor, que poderá consultar a reputação do comprador, porém de forma que o
mesmo continue anônimo. O terceiro e o quarto pseudônimos são idênticos ao Eshopping. Quanto à privacidade, preserva o perfil e anonimato do cliente/comprador.
Quanto à lei, são coletadas evidências digitais necessárias em caso de roubo de
identidade, reputação, garantia e entregas erradas.
•
E-banking: assume que a instituição financeira tem a obrigação de gerenciar o dinheiro
dos clientes e realizar transações financeiras quando solicitadas. O IMS tem como
funcionalidades principais: o gerenciamento de endereços para transações eletrônicas
específicas com históricos correspondentes; manter pseudônimos de clientes que são
suas identificações como cidadão; e duração de contratos (cartão de crédito, seguro e
hipoteca). Quanto à segurança, prevê o roubo de identidade e mau uso, não repúdio e
17
prevenção de endereçamento falso. Em termos de privacidade, protege o perfil dos
usuários.
No E-government, o objetivo do IMS é auxiliar o governo a executar seus procedimentos de
negócio com a ajuda de tecnologias de comunicação através do meio eletrônico. Exemplo de
atuações: declaração de impostos, investigação e casos judiciais.
Já o E-health consiste na preservação dos dados de pacientes no que diz respeito a seus
estados de saúde. Utiliza-se também o conceito de múltiplos pseudônimos durante o processo de
tratamento do paciente, garantindo assim a privacidade de sua identidade.
2.2.4 Principais Requisitos
São requisitos importantes em um IMS: funcionalidade, usabilidade, segurança, privacidade,
aplicação da lei, fidelidade e interoperabilidade.
Quanto à funcionalidade, o IMS auxilia o usuário a controlar sua identidade. Deve informar
o usuário sobre o contexto de uma situação, oferecendo-lhe escolha, caso necessário. É necessário
que uma IMA tenha interfaces para comunicação com parceiros, especialmente em redes digitais.
Isto significa detalhadamente que: uma IMA deve possibilitar a administração de uma identidade
parcial, bem como de dados de uma identidade; uma IMA pode agir como um gateway para a
comunicação digital, ou seja, possibilitar o controle da troca de dados entre os parceiros da
comunicação; e uma IMA deve possuir a capacidade de escolher uma identidade parcial assim que
solicitada ou desejada em um contexto específico.
A usabilidade do ponto de vista do usuário é um dos mais importantes requisitos para
nomear uma IMA. A ISO 9241-11 define usabilidade como a extensão na qual um produto pode ser
usado por determinados usuários para alcançar objetivos específicos com efetividade, eficiência e
satisfação em um contexto de uso específico. A interface do usuário em uma IMA precisa permitir
que este interprete o contexto, a situação e escolha a identidade desejada; gerencie a identidade em
um mundo digital; e trabalhe com diferentes dispositivos, tais como, PCs (Personal Computer),
PDAs (Personal Digital Assistant) e SmartPhones.
Quanto à segurança, um IMS deve ser eficiente contra os ataques em disponibilidade,
integridade e confidencialidade de seus serviços e informações. Isto se torna necessário devido ao
18
grande volume de informações confidenciais existentes dos usuários, que pode causar tentativas de
espionagem, manipulação e roubo de identidades.
A privacidade define que, se uma IMA está localizada na máquina do usuário que possui
controle dos seus dados pessoais e a forma como estes são processados, ela pode apoiar o usuário a
garantir seus direitos de forma on-line. Quando os dados pessoais são armazenados e gerenciados
por um provedor, deverão seguir as normas legais, ou seja, o provedor só poderá processar estes
dados mediante autorização do usuário. Nestas situações em que os provedores de serviços são
responsáveis pelos dados pessoais dos usuários, aplica-se o conceito de segurança multilateral. Este
tipo de segurança é aplicada em ações que envolvam comunicação entre diferentes partes. A
segurança multilateral significa prover segurança para todas as partes envolvidas na comunicação.
Na aplicação da lei, as partes responsáveis estão geralmente interessadas em coletar o
máximo de informações para dar evidências e tornar os procedimentos criminais mais fáceis e
efetivos.
A fidelidade é um pré-requisito para todas as transações onde o usuário confie no provedor
de serviço, até mesmo nos casos onde o usuário tem pleno domínio sobre o hardware, software e
fluxo de dados.
Quanto à interoperabilidade, uma IMA deve implementar interfaces compatíveis com
padrões internacionais, além de oferecer compatibilidade e integração com sistemas existentes.
2.2.5 Mecanismos
Existem mecanismos que são responsáveis pelo funcionamento de um IMS, são eles:
tratamento de comunicação independente e representações de identidades, pseudônimos com
propriedades específicas, recuperação de identidades, funcionalidade de controle de privacidade,
gerenciamento de histórico, detecção de contexto e tratamento de regras.
No tratamento de comunicação independente e representações de identidades, os
componentes de uma identidade parcial podem variar de acordo com as aplicações ou contextos.
Pode ser um identificador, caracterizando um pseudônimo que funciona como um ID único ou um
endereço, através de dados, interesses ou certificados. O usuário deve ter acesso a sua identidade
parcial e principal, para criar, apagar e atualizar dados das identidades. O tratamento da identidade
19
pode ser realizado em quaisquer tipos de computadores. O tipo de dispositivo em que uma IMA é
implementada determina a possibilidade de representação da identidade parcial de um usuário. Para
os procedimentos de configuração da IMA, o usuário pode configurar de acordo com suas
preferências ou se preferir, o sistema oferece modos de aprendizagem que interpretam o
comportamento do usuário.
Em pseudônimos com propriedades específicas, o controle do usuário em relação ao sigilo
de seus dados quando trafegam entre os parceiros de comunicação é o principal conceito do real
gerenciamento de identidades. Isto, realmente é possível com dados autenticados assim que
pseudônimos específicos são utilizados. Um pseudônimo juntamente com os dados ligados a ele
forma uma identidade parcial. Algumas propriedades importantes dos pseudônimos podem ser
citadas: suportar autenticação e autorização, garantir o anonimato do proprietário do pseudônimo e
garantir a propriedade do pseudônimo usando a assinatura digital.
O uso adequado de credenciais impossibilita que o usuário deixe seu “rastro” quando navega
pelos serviços dos parceiros de comunicação, ou seja, o anonimato é garantido enquanto estiverem
usando as credenciais. Por exemplo, um indivíduo pode obter uma credencial conversível de uma
organização utilizando um de seus pseudônimos. Em seguida, pode demonstrar posse desta
credencial à outra organização sem revelar seu primeiro pseudônimo. Sendo assim, uma credencial
pode ser convertida em uma credencial para o uso específico de um pseudônimo corrente.
Neste contexto, se um serviço restrito a usuários autorizados está sendo requisitado por um
usuário que deseja permanecer anônimo, o mesmo precisará mostrar uma credencial para acessar o
serviço. Quando um usuário obtém uma credencial, esta é associada a um novo pseudônimo,
utilizado apenas para aquela transação. A organização (parceira de comunicação) que recebe o
pseudônimo verifica a credencial para obter as informações certificadas. Para verificar uma
credencial, são necessárias algumas informações, por exemplo, uma chave obtida de uma PKI
(Public Key Infrastructure – Infra-Estrutura de Chave Pública). Estas chaves precisam ser
certificadas e publicas no servidor de chaves, de modo que cada possível verificador possa ter
acesso. A Figura 5 mostra as entidades que participam de um sistema de credenciais: autoridade
certificadora, local onde as organizações e os usuários podem obter certificados; servidor de chaves,
onde todas as chaves publicadas podem ser acessadas; e organizações, que são partes que emitem
credenciais para os usuários e publicam chaves no servidor de chaves.
20
Figura 5. Uso de credenciais em um IMS
Fonte: Adaptado de ICPP/ULD e SNG (2003).
A recuperação de identidades é utilizada em casos de perda dos dados da identidade dos
usuários. Os usuários podem confiar em soluções de backup que previnam a perda de dados.
A funcionalidade de controle de privacidade fornece aos usuários informações sobre seus
dados pessoais armazenados em um servidor e permite acesso e controle desses dados.
Em gerenciamento de histórico, uma IMA deve ser capaz de armazenar dados históricos das
transações ocorridas entre as partes envolvidas. Estes dados podem ser utilizados para analisar a
fidelidade entre as partes, ou ainda saber se uma transação foi bem sucedida ou não.
A detecção de contexto ocorre durante uma transação de um usuário com outra parte
envolvida e deve ser capaz de obter informações adicionais, como as propriedades que um novo
pseudônimo deve possuir. Dessa forma, detecções automáticas de contexto servem para ajudar o
usuário a gerenciar sua identidade.
21
No tratamento de regras, uma IMA deve ser capaz de perguntar ao usuário sobre certas
decisões a respeito de sua identidade, porém haverá decisões que a própria aplicação deverá tomar,
de acordo com a detecção de contexto. Estas decisões devem ser suportadas por um tratamento de
regras apropriado para habilitar uma escolha automática.
A evidência digital é utilizada para registrar informações deixadas pelos usuários em suas
transações para que eventualmente possam ser utilizadas como evidência para fins legais.
2.3 SHIBBOLETH
Os conceitos do sistema Shibboleth estudados e descritos nessa seção foram retirados da
fonte Shibboleth (2006) e Twiki (2006).
2.3.1 Conceitos Básicos
O Shibboleth é um software middleware de código aberto que tem como objetivo criar uma
estrutura segura para simplificar o gerenciamento de identidades dos usuários. Fornece mecanismos
para a criação de um sistema de autenticação única ou SSO (Single Sign-On) e permite que as
instituições troquem informações de autorização de acesso único para proteger e compartilhar
recursos on-line.
De acordo com Internet2 (2006), middleware “é a camada de software entre a rede e a
aplicação”.
O Shibboleth é um projeto da Internet2 e do MACE (Middleware Architecture Committee
for Education), uma união de 200 universidades americanas e européias, em conjunto com
indústrias e governo para desenvolver e distribuir aplicações avançadas de rede. A operação do
Shibboleth está em conformidade com a SAML (Security Assertion Markup Language), um
framework baseado na linguagem XML (Extensible Markup Language) que permite a criação e a
troca de informações de segurança entre parceiros on-line.
O anexo I apresenta as aplicações e serviços que utilizam o Shibboleth em suas
implementações. Em ambientes de produção, pode-se citar o Napster, software utilizado para
compartilhar arquivos de áudio e o Sympa, software gerenciador de listas de e-mail.
22
O Shibboleth é um sistema designado para troca de atributos entre domínios, fornece uma
estrutura segura para as instituições transmitirem atributos sobre um browser através de domínios
seguros. Quando um usuário tenta acessar um recurso protegido por Shibboleth, ele é redirecionado
para um serviço que questiona em qual instituição deverá ser feita a autenticação. Se o usuário
ainda não está autenticado, será redirecionado para o sistema de autenticação da instituição
escolhida. Depois de autenticar o usuário, o IdP (Identity Provider – Provedor de Identidade),
localizado na instituição escolhida, irá gerar uma referência temporária para o usuário, conhecida
como handle e envia este para o SP (Service Provider – Provedor de Serviço). O provedor de
serviço poderá usar o handle para perguntar sobre os atributos deste usuário. Baseado nestes
atributos, o provedor de serviço decide se garante ou não o acesso ao recurso. Dessa forma, se
autorizado, o usuário terá acesso ao material requisitado.
2.3.2 Características
Uma das características do sistema Shibboleth é o conceito de identidade federada. Esta
tecnologia permite que as instituições federadas utilizem métodos distintos e próprios de
autenticação e autorização. Além de beneficiar a instituição, o conceito de identidade federada pode
ajudar os usuários, pois reduz o número de senhas que os mesmos precisam lembrar. Usando o
Shibboleth é simplificada a gerência da identidade, tanto para o usuário quanto para os provedores
de serviço.
Na forma atual, os métodos de autenticação de usuário fornecem à aplicação somente um
identificador (por exemplo, um endereço de e-mail) para realizar a autenticação. Esta simples forma
de acesso não é suficiente para os sistemas modernos. Aplicações precisam de informações
adicionais sobre os usuários para realizarem corretas decisões de autorização. Sendo assim, o
sistema Shibboleth fornece atributos dos usuários para as aplicações com a flexibilidade, segurança
e a privacidade requerida em cenários federados.
O Shibboleth permite que os usuários controlem quais as informações serão liberadas e
quem poderá recebê-las. O sistema Shibboleth disponibiliza um caminho para referenciar o usuário
sem revelar a identidade principal. O usuário é conhecido pelo site provedor de serviço somente por
um handle temporário, sendo assim este site pode decidir o que é permitido para o usuário.
23
2.3.3 Federação
A federação Shibboleth provê parte da base confiável requerida para funcionamento da
arquitetura Shibboleth. A federação é um grupo de organizações (universidades, instituições,
provedores de conteúdo, entre outros) que concordam em trocar atributos usando o SAML. As
organizações precisam concordar em um grupo comum de procedimentos técnicos e políticos, tais
como: mecanismos de segurança usados entre os servidores Shibboleth; definição de atributos;
como localizar os servidores de outros participantes; tratamento das informações pessoais que são
confidenciais; e a escolha das organizações que podem participar. Entrar em uma federação não é
explicitamente necessário para operação do Shibboleth, portanto provedores de serviço e
provedores de identidade podem interagir somente com a definição de acordos bilaterais.
Uma federação pode ser criada em uma variedade de formatos e modelos confiáveis, porém
precisa prover certo grupo de serviços para membros da federação. Necessita fornecer um registro
para as aplicações processadas e distribuir informações dos sócios da federação para os sites
provedores de identidade e provedores de serviço. Precisa também distribuir componentes PKI,
necessários para a confiança entre os provedores de identidade e os provedores de serviço.
O ambiente PKI é uma infra-estrutura que provê aos negócios eletrônicos condições de
viabilidade a fim de que tenham os mesmos resultados daqueles conferidos aos contratos
fora da rede. Tal recurso viabiliza a autenticação oficial e a integridade do documento,
assim como sua elaboração e a confidencialidade nas operações e na assinatura digital,
garantindo o valor jurídico e precavendo os envolvidos nas negociações da recusa do que
foi firmado anteriormente (SILVA, 2004).
Como exemplo de federação pode-se citar a InQueue, uma federação operada pela Internet2.
Esta é destinada a organizações que estão iniciando os trabalhos com o sistema Shibboleth e
confiam em um modelo federado. Além da federação InQueue, outras federações estão em
operação, são elas: HAKA – Finlândia, CRU – França, InCommon – Estados Unidos, SDSS –
Reino Unido e Switch – Suíça.
2.3.4 Provedor de Identidade
O provedor de identidade é o local onde os usuários irão realizar a autenticação, portanto o
IdP mantém credenciais e atributos de usuários e faz o controle destes atributos, liberando-os
somente para as instituições confiáveis.
24
Existem quatro componentes principais no IdP: o HS (Handle Service), o AA (Attribute
Authority), o serviço de diretório e o mecanismo de autenticação. O HS faz a autenticação dos
usuários em conjunto com o mecanismo de autenticação e cria um handle token para o usuário. O
handle token (afirmação de autenticação SAML) é um transportador de credencial que contém um
ID ou handle. O HS é interoperável, pois permite que a instituição escolha o mecanismo de
autenticação desejado. Já o AA funciona da seguinte forma, quando um usuário requisita acesso ao
recurso, o provedor de serviço mostra o handle token para o AA e requisita atributos relativos ao
usuário. O AA aplica políticas de privacidade sobre a liberação destes atributos e permite que o
usuário especifique quais provedores de serviço podem acessá-los. Semelhante ao HS, o AA
permite que a instituição escolha o serviço de diretório desejado. O serviço de diretório será
fornecido pela instituição, sendo o local onde ficarão armazenados os dados dos usuários, ou seja,
os seus atributos. O mecanismo de autenticação não é fornecido pelo sistema Shibboleth. Este
deverá ser obtido através de terceiras partes, tais como, o WebISO (Web Initial Sign-On) ou o
Pubcookie. Estas ferramentas permitem que os usuários façam autenticação utilizando um serviço
central que possibilita a utilização de apenas um usuário e senha.
Do ponto de vista do IdP, o primeiro contato do usuário é o redirecionamento para o HS
(Handle Service), que consulta o mecanismo de autenticação para determinar se o usuário está
autenticado. Caso não esteja, o browser do usuário será questionado sobre a autenticação. Após a
autenticação, será enviado para a URL (Universal Resource Locator) do provedor de serviço, um
handle contendo a afirmação de autenticação. Em seguida, o provedor de serviço envia uma
requisição, contendo o handle do usuário para o AA. O AA consulta o ARP (Attribute Release
Policies) para a entrada de diretório correspondente ao handle. Conforme regras das políticas
consultadas, o IdP libera os atributos para o provedor de serviço.
2.3.4.1 ARP
O AA (Attribute Authority) mantém um grupo de políticas chamado ARP (Attribute Release
Policies), estas políticas administram a liberação de atributos do usuário para provedores de serviço.
Quando um usuário tenta acessar um recurso protegido por Shibboleth, o provedor de serviço deste
recurso pergunta ao IdP sobre todos os atributos do usuário. O AA procura os atributos associados
com o usuário, passa pelas regras do ARP e depois envia para o provedor de serviço somente os
atributos permitidos nesta política.
25
Na origem dos dados, um ARP não pode mudar as informações dos atributos. Os ARPs são
administrativamente mantidos e aplicados a todos os usuários para qual o provedor de identidade é
autoritário. Todos os ARPs são especificados usando a mesma sintaxe e semântica.
Cada ARP é formado de uma ou mais regras que especificam quais atributos e valores
podem ser liberados para o provedor de serviço. A atribuição das regras para os vários provedores
de serviço é flexível e inclui algumas particularidades, tais como: uma regra deve afetar todos os
provedores de serviço (regra padrão); os nomes exatos dos provedores de serviço para qual uma
regra é aplicada; expressão regular no nome do provedor de serviço que deverá ser comparado para
determinar se uma regra é aplicada; e aplicações individuais que podem atingir vários provedores de
serviço.
2.3.4.2 Requisitos
Os requisitos de software para implementação de um provedor de identidade Shibboleth são:
•
Um protocolo para serviço de diretório, tais como: LDAP (Lightweight Directory
Access Protocol) ou SQL (Structured Query Language). Shibboleth trabalha com JDBC
(Java Database Conectivity) e JNDI (Java Naming and Directory Interface) que garante
a comunicação com os principais bancos de dados. O AA possui uma API (Application
Programming Interface) Java, o qual permite a utilização de conectores para outros tipos
de fonte de dados;
•
Um mecanismo de autenticação para os usuários, preferencialmente um serviço de
autenticação única, por exemplo: WebISO ou Pubcookie;
•
Shibboleth pode ser implementado nas plataformas: Windows, Linux, Mac OS X e
Solaris. Além desta variedade, pode funcionar com qualquer plataforma que tenha uma
implementação do Tomcat;
•
Um Java servlet container. O sistema Shibboleth é testado massivamente com o Tomcat;
e
•
Um servidor web, é recomendado o Apache. O Apache será implementado na frente do
Tomcat para prover serviços de autenticação e controle do fluxo das requisições.
26
2.3.5 WAYF
O serviço WAYF (Where Are You From) é um componente da arquitetura Shibboleth
responsável por permitir um usuário associar-se com uma instituição especificada. Ao solicitar um
recurso, caso o usuário não esteja autenticado, o componente WAYF apresenta ao usuário uma lista
de instituições que fazem parte da federação. Após escolher a instituição, o usuário é redirecionado
para o componente HS e iniciará o processo de autenticação. O serviço WAYF pode ser distribuído
como parte de um provedor de serviço ou como código de terceira parte operado por uma
federação.
2.3.6 Provedor de Serviço
O SP (Service Provider – Provedor de Serviço) é o local onde são armazenados os recursos
acessados pelos usuários. Faz o gerenciamento dos recursos protegidos pelo Shibboleth, validando
os handles enviados pelo provedor de identidade e usando-os para criar um contexto seguro. Ajuda
a aplicação no controle de acesso baseado na informação.
Há três componentes principais no SP: o ACS (Assertion Consumer Service), o AR
(Attribute Requester) e o RM (Resource Manager). O componente ACS fica responsável por
receber mensagens com o objetivo de estabelecer um contexto seguro. O ACS pode ser definido
como um recurso HTTP (HyperText Transfer Protocol) que processa mensagens SAML e retorna
um cookie para o browser, representando a informação extraída da mensagem. O AR é o
responsável por obter e repassar os atributos do usuário para o RM. Já o RM é um componente que
intercepta as requisições aos recursos e toma as decisões de controle de acesso baseadas nos
atributos dos usuários.
Do ponto de vista do SP, um browser irá alcançar o RM com uma requisição ao recurso
protegido por Shibboleth. O RM permite então que o ACS use o WAYF para adquirir o nome do
provedor de identidade do usuário. Após autenticar o usuário, o HS responde com uma afirmação
de autenticação SAML handle, que o ACS entrega para o AR. O AR usa este handle e o endereço
fornecido do provedor de identidade para requisitar todos os atributos que são permitidos saber
sobre o usuário. Após receber os atributos, o AR prepara algumas validações e análises baseadas
nas AAPs (Attribute Acceptance Policies). Estes atributos são entregues ao RM, que é responsável
por usá-los para decidir se garante acesso ao recurso. As AAPs definem as regras dos atributos
27
recebidos do provedor de identidade. São utilizadas pela aplicação para decisões de controle de
acesso e para fornecimento de filtros, determina quem pode afirmar determinada informação.
2.3.6.1 Requisitos
Os requisitos de software para implementação de um provedor de serviço Shibboleth são:
•
Um servidor web, recomenda-se o IIS (Internet Information Server) da Microsoft ou o
Apache com suporte a SSL (Secure Socket Layer);
•
Aplicações web devem ser modificadas para serem capazes de confiar nos atributos
fornecidos pelo Shibboleth; e
•
Na maioria dos casos, esquemas de controle de acesso podem ser simplificados e
reescritos para tirar vantagem do sistema Shibboleth, já que o controle de acesso do
Shibboleth é baseado em atributos.
2.3.7 Segurança
O software e os protocolos do Shibboleth são projetados para fornecer proteção contra
diversos tipos de ataques. Porém, mesmo os mais seguros protocolos podem ser comprometidos se
o ambiente onde trabalham é inseguro. Em vista disso, existem rigorosas precauções de segurança
que devem ser aplicadas no ambiente Shibboleth. A utilização do protocolo SSL é altamente
recomendada para proteção de todos os fluxos do sistema. O SSL deve ser utilizado para interações
com as máquinas dos usuários para prover a cifragem necessária, evitando ataques do tipo MITM
(Man In The Middle). O MITM é um tipo de ataque onde o atacante tem a capacidade de ler e
modificar mensagens trocadas entre dois parceiros, sem que estes saibam que o link foi
comprometido. Outros ataques podem produzir interceptação nas etapas do sistema Shibboleth. A
melhor proteção contra estas interceptações é a proteção do serviço WAYF, em que o provedor de
identidade falso não será usado. Além disso, medidas de segurança devem ser adotadas para
proteger os serviços de diretório, já que estes locais contêm informações sobre os usuários. Sendo
assim, estas informações devem ser trocadas entre os provedores de maneira segura, de modo que
todos os pedidos que o provedor de serviço executa estejam autorizados e que toda informação
fornecida pelo provedor de identidade seja correta.
28
2.3.8 Aplicações
Aplicações Shibboleth são as unidades principais da composição do provedor de serviço.
Uma aplicação representa um grupo de recursos web que operam usando o mesmo tratamento de
atributos e configurações confiáveis, compartilhados em uma sessão comum com o browser do
usuário. Em um estudo de caso, enquanto um usuário navega em uma aplicação A e atinge uma
aplicação B, uma nova sessão é estabelecida, sendo que a autenticação do usuário pode não ser
requerida. Como uma característica do relacionamento entre aplicações e sessões, uma aplicação
geralmente trabalha usando apenas um domínio.
Um único provedor de serviço pode suportar um grande número de aplicações, sendo que
não precisa registrar ou publicar informações sobre cada uma das informações recebidas pelos
provedores de identidade. Isto permite que os provedores de serviço com uma complexa
configuração interna, possam ser tratados como uma única entidade por provedores de identidade,
desde que tenham como propósito a liberação de atributos.
2.3.9 Sessões
Muitas das implementações dos provedores de serviço estão preocupadas com a criação e
posterior manutenção das sessões com o browser. Uma sessão consiste em um cookie passado entre
o browser e o servidor web, associado a um contexto seguro. O contexto contém a informação de
autenticação do usuário, e geralmente um grupo de atributos que compõem a identidade do mesmo.
Cada aplicação mantém sessões distintas com o browser através de cookies separados. O sistema
Shibboleth não suporta funcionalidade de logout, somente o término das sessões individuais da
aplicação por remoção dos respectivos cookies. Entretanto, ainda não há como os provedores de
serviço criarem sessões dos provedores de identidade, por exemplo, um processo de login SSO que
irá expirar. Esta funcionalidade de logout está prevista na versão 2.0 do sistema Shibboleth.
O browser do usuário acessando um recurso protegido por Shibboleth pode ter dois
resultados: estabelecimento de uma standard session e estabelecimento de uma lazy session. O
mecanismo de standard session no qual o Shibboleth protege o recurso em todas as circunstâncias,
resulta no estabelecimento de uma sessão de browser baseada em cookie e em grupo de atributos
gravados para esta aplicação. Já no mecanismo de lazy session, o recurso pode ser acessado sem
prévia autenticação. Isto significa que, a aplicação precisa ser inteligente suficiente para determinar
se a autenticação é necessária, e então construir a própria URL (Universal Resource Locator) para
29
iniciar o redirecionamento do browser para requisitar a autenticação. Este mecanismo é geralmente
útil para proteger uma única URL com diferentes mecanismos de acesso, ou para requerer acesso
somente em casos onde à aplicação julgar necessário.
Independente disso, uma aplicação web protegida por Shibboleth pode ter necessidade de
estabelecer sua própria sessão com o usuário. Esta sessão pode persistir além da sessão do
Shibboleth, e o logout desta sessão, se suportado, não poderá terminar a sessão iniciada. Os
administradores da aplicação devem verificar a expiração de todas as sessões para limitar a
vulnerabilidade aos ataques ou a negligência do usuário.
2.3.10
Funcionamento
O sistema Shibboleth é formado por dois componentes principais: o IdP e o SP. Estes
componentes são distribuídos separadamente, mas trabalham juntos para prover acesso seguro aos
recursos. A Figura 6 apresenta o fluxo durante uma operação completa do Shibboleth, partindo da
situação que o browser do usuário chega ao site provedor de serviço sem uma sessão existente e
sem nenhuma informação sobre seu site provedor de identidade. Os atores principais incluem: o
usuário, ou seja, aquele que deseja usar o recurso web protegido; o site provedor de serviço, local
onde está instalado o software SP; e o site provedor de identidade, local onde está instalado o
software IdP.
30
Figura 6. Diagrama de Fluxo do Sistema Shibboleth
Fonte: Adaptado de Shibboleth (2006).
O usuário navega para o recurso web usando o browser. O recurso web, localizado no site
provedor de serviço, é protegido, então se torna necessário coletar algumas informações sobre o
usuário para decidir se o acesso é permitido (Passo 1). O software Shibboleth redireciona o browser
do usuário para uma página de navegação, chamada WAYF, nesta página é apresentada ao usuário
uma lista de organizações que podem acessar o recurso web protegido (Passo 2 e 3). A partir desta
etapa, o usuário seleciona a sua organização (Passo 4) e o browser é enviado para o web site da
organização escolhida, ou seja, para o componente HS localizado no seu provedor de identidade
(Passo 5). O usuário visualiza a interface web de autenticação da sua organização (Passo 6), onde
serão inseridas as credenciais (Passo 7). Após enviar suas credencias, o componente HS usa o
mecanismo de autenticação local da organização para verificar as credenciais do usuário (Passo 8).
O HS cria um handle para identificar o usuário. Este handle é registrado com o AA de forma que
possa ser mapeado para os atributos do usuário quando a requisição do recurso chegar. O handle é
colocado dentro de um handle token e enviado para o recurso web. Este handle token informa que o
31
usuário está autenticado (Passo 9). O handle token é recebido pelo componente ACS que examina o
handle token para determinar o provedor de identidade que pode fornecer os atributos sobre o
usuário. Após examinar e validar o handle token, o ACS transfere-o para o AR e cria uma sessão
(Passo 10). O AR utiliza o handle token para requisitar ao provedor de identidade, especificamente
ao AA, informações adicionais (atributos) sobre o usuário (Passo 11). No provedor de identidade,
após terem sido comparados e validados o handle token e o handle, foi mapeado a identidade do
usuário, sendo assim o ARP é consultado. Se a liberação dos atributos do usuário for permitida, os
valores dos atributos requisitados são devolvidos (Passo 12). O AA responde com os valores dos
atributos solicitados no formato SAML assertion (Passo 13). O provedor de serviço recebe os
atributos e passa para o RM (Passo 14). O RM utiliza estes atributos para decidir se garante ou não
o acesso ao recurso. Se permitido, carrega o recurso solicitado no browser do usuário (Passo 15).
Outros passos podem ser citados, por exemplo: o WAYF pode criar um cookie no browser
do usuário em que não seja necessária a apresentação da página de seleção da organização; se a
organização do usuário utiliza serviço de autenticação única e o usuário já estiver com uma sessão
de autenticação criada, a interface web de autenticação não precisa ser apresentada; e em muitos
casos o usuário pode ter acesso ao recurso sem visualizar qualquer página intermediária.
2.3.11
Aplicação Prática
Com o intuito de demonstrar o funcionamento básico do sistema Shibboleth foi realizado a
instalação do SP (Provedor de Serviço) e do IdP (Provedor de Identidade). Ambos foram instalados
em sistema operacional Linux, o provedor de identidade utilizando a distribuição Slackware versão
10 e o provedor de serviço à distribuição Fedora Core versão 5. Após realização das instalações, foi
utilizado o sistema TestShib. O TestShib tem como objetivo principal auxiliar nos testes iniciais da
instalação do Shibboleth, interagindo com os provedores que são implementados (TESTSHIB,
2006).
2.3.11.1 Implementação do Provedor de Identidade
Para instalação, configuração e testes do provedor de identidade, chamado “shibidp.dalcoquio.com.br”, foram executados as seguintes etapas:
1. Instalação e configuração do sistema operacional Linux Slackware versão 10 kernel
2.4.31;
32
2. Instalação e configuração do servidor web Apache versão 1.3.33 com suporte ao SSL.
Para assinar a chave pública foi utilizada uma autoridade certificadora que não cobrou
pelo serviço. A assinatura da chave pública, chamada de certificado digital, faz parte da
criação do ambiente PKI;
3. Implementação do servlet container Tomcat versão 5.5 e Java 1.5;
4. Instalação do mecanismo de autenticação e do serviço de diretório. Para efeito de testes
iniciais foram implementados serviços simplificados de autenticação e de diretório;
5. Implementação do software Shibboleth IdP versão 1.3c; e
6. Registro do provedor de identidade chamado “shib-idp.dalcoquio.com.br” no sistema
TestShib.
A seguir são mostrados os passos realizados nos testes do provedor de identidade “shibidp.dalcoquio.com.br” interagindo com o provedor de serviço do TestShib.
33
Na Figura 7 o processo é iniciado. O usuário faz uma requisição ao recurso desejado
(https://sp.testshib.org), neste caso um recurso protegido por Shibboleth. O recurso é protegido por
um ambiente PKI, portanto para continuar, o usuário precisa confirmar o recebimento do certificado
digital (chave pública).
Figura 7. Requisição ao Recurso Protegido por Shibboleth
34
Após aceitar o certificado digital, o usuário é direcionado ao serviço WAYF que irá
perguntar qual é o seu provedor de identidade, ou seja, o local onde ele fará a autenticação (Figura
8).
Figura 8. Serviço WAYF
35
Após selecionar o seu provedor de identidade, o usuário será novamente requisitado para
aceitação do certificado digital, entretanto agora será o certificado do seu provedor de identidade
(Figura 9).
Figura 9. Requisição ao Provedor de Identidade
36
Depois de aceitar o certificado do seu provedor de identidade, o usuário será encaminhado
ao mecanismo de autenticação, chamado “Dalcoquio – Single Sign-On” onde o usuário informa as
suas credencias (Figura 10).
Figura 10. Pedido para Autenticação no Provedor de Identidade
37
O usuário informa as suas credencias, neste caso digita o seu usuário: myself e senha: myself.
(Figura 11).
Figura 11. Entrada da Credencial
38
Na Figura 12, após aceitação do usuário pelo sistema de autenticação, ocorre o
redirecionamento do browser do usuário para o recurso web solicitado. Neste instante o provedor de
identidade gera o handle. Este será enviado ao provedor de serviço para validar a autenticação do
usuário. Além disso, este handle é utilizado para solicitar informações (atributos) sobre o usuário.
Figura 12. Redirecionando para o Recurso Solicitado
39
Finalmente, após ter feito o controle de acesso baseado nos atributos do usuário, o
gerenciador de recurso concedeu o acesso ao recurso solicitado. Sendo assim, o recurso web é
apresentado ao usuário (Figura 13).
Figura 13. Recurso Solicitado pelo Usuário
2.3.11.2 Implementação do Provedor de Serviço
Para implementação e testes do provedor de serviço chamado “shib-sp.dalcoquio.com.br”,
foram executados os seguintes passos:
1. Instalação e configuração do sistema operacional Linux Fedora Core versão 5 kernel
2.6.15;
2. Instalação e configuração do servidor web Apache versão 1.3.33 com suporte ao SSL.
Para assinar a chave pública foi utilizada uma autoridade certificadora que não cobrou
pelo serviço. A assinatura da chave pública, chamada de certificado digital, faz parte da
criação do ambiente PKI;
3. Implementação do software Shibboleth SP versão 1.3-9; e
40
4. Registro do provedor de serviço chamado “shib-sp.dalcoquio.com.br” no sistema
TestShib.
A seguir são mostrados os passos realizados nos testes do provedor de serviço “shibsp.dalcoquio.com.br” interagindo com o provedor de identidade do TestShib.
Na Figura 14 o processo é iniciado. O usuário faz uma requisição ao recurso desejado
(https://shib-sp.dalcoquio.com.br/secure), neste caso um recurso protegido por Shibboleth. O
recurso é protegido por um ambiente PKI, portanto para continuar, o usuário precisa confirmar o
recebimento do certificado digital (chave pública).
Figura 14. Requisição ao Recurso Protegido por Shibboleth
41
O provedor de identidade mostra o seu certificado digital e solicita ao usuário que confirme
o recebimento (Figura 15).
Figura 15. Conexão Segura no Provedor de Identidade
42
O usuário informa as suas credencias, neste caso digita o seu usuário: myself e senha: myself.
(Figura 16).
Figura 16. Entrada da Credencial
43
Na Figura 17, após aceitação do usuário pelo sistema de autenticação, ocorre o
redirecionamento do browser do usuário para o recurso web solicitado. Neste instante o provedor de
identidade gera o handle. Este será enviado ao provedor de serviço para validar a autenticação do
usuário. Além disso, o handle é utilizado para solicitar informações (atributos) sobre o usuário.
Figura 17. Redirecionando para o Recurso Solicitado
44
Finalmente, após ter feito o controle de acesso baseado nos atributos do usuário, o
gerenciador de recurso, concede acesso ao recurso solicitado. Sendo assim, o recurso web é
apresentado ao usuário (Figura 18).
Figura 18. Recurso Protegido por Shibboleth
2.3.12
Trabalhos Relacionados
Durante a execução deste trabalho, algumas iniciativas de pesquisa nesse assunto foram
identificadas.
O projeto IAMSECT (Inter-institutional Authorisation Management to Support E-learning
with reference to Clinical Teaching) localizado em IAMSECT (2006), tem como objetivo
desenvolver, testar e disseminar uma abordagem prática para implementar a autenticação e
autorização para e-learning (sistema de educação à distância) usando o Shibboleth (WHEELER,
2006). O projeto teve como resultado final a adoção do Shibboleth pelas universidades participantes
do projeto, facilitando o controle dos recursos distribuídos no ambiente do e-learning.
45
O projeto PRIME (Privacy and Identity Management for Europe) é um consórcio formado
por várias empresas (IBM, Lufthansa, etc) e instituições da Europa (Universidade de Milano,
Instituto EURECOM, etc), que está sendo desenvolvido e tem cronograma de atividades previstas
de 2004 até 2007 (PRIME, 2006), (HANSEN e KRASEMANN, 2005). O PRIME tem como
objetivo propor a construção de um sistema de gerenciamento de identidades viável, controlado
pelo usuário, levando em consideração também as questões de legislação (CAMENISCH et al.
2005).
O projeto da Universidade Purdue (PURDUE, 2006), tem como objetivo obter soluções para
a segurança e a privacidade da identidade do usuário em uma federação. No artigo (BHARGAVSPANTZEL; SQUICCIARINI e BERTINO, 2006), os autores contribuem com um protocolo
criptográfico que deve ser utilizado para a proteção contra o roubo da identidade do usuário.
O Brasil já utiliza o Shibboleth, em instituições como a UFMG (Universidade Federal de
Minas Gerais) (LCC-CENAPAD, 2006), UFV (Universidade Federal de Viçosa), UFPA
(Universidade Federal do Pará), UFJF (Universidade Federal de Juiz de Fora) e UNISC
(Universidade de Santa Cruz do Sul) (FINANCIAR, 2006). Estas instituições podem requisitar
serviços do FINANCIAR, um sistema de busca que disponibiliza para pesquisadores e empresários,
informações sobre fontes financiadoras internacionais e nacionais, para projetos de pesquisa,
desenvolvimento e inovação (FINANCIAR, 2006).
46
3 PROJETO
Um ambiente completo do sistema Shibboleth é formado por vários componentes que
cooperam entre si para proteger uma aplicação ou recurso. Nem todos estes componentes fazem
parte do escopo do sistema Shibboleth, portanto este projeto tem como proposta a implementação
do: mecanismo de autenticação, serviço de diretório, controle de políticas de segurança e
gerenciador de recurso. Para a demonstração prática do sistema Shibboleth é proposta a
implementação de uma federação Shibboleth (servidor provedor de identidade, servidor provedor de
serviço, servidor WAYF) e a implementação da aplicação.
No sistema Shibboleth é recomendado o uso de uma federação, desta forma será criada uma
federação chamada InBrazil que fornecerá regras de conduta entre os membros da federação, além
do serviço WAYF. O WAYF é responsável por direcionar o usuário para a sua instituição, onde
basicamente o serviço irá checar suas credenciais.
3.1 Cenário da Aplicação
O sistema Shibboleth é uma novidade no Brasil, não existem web sites ou comunidades que
tratem do assunto. A documentação em inglês é bastante expressiva e sofre constantes melhorias.
Em vista disso, propõe-se a criação de um web site que contenha documentos em português sobre o
sistema Shibboleth, com informações referentes a este trabalho, pesquisas realizadas, documentos
utilizados para instalação do ambiente, entre outros.
A criação da federação InBrazil também faz parte do escopo deste trabalho, pois a federação
completa o ambiente do sistema Shibboleth. Esta federação ficará aberta para novos integrantes que
tenham intenção de estudar e se aperfeiçoar no assunto. Os novos membros da federação poderão
utilizar a aplicação que será disponibilizada neste web site, bem como criar novas aplicações que
ficarão disponíveis para a federação InBrazil.
O ambiente Shibboleth somente tem utilidade se existirem aplicações que suportem os
componentes e estejam de acordo com as políticas do Shibboleth. Sendo assim, para demonstrar o
funcionamento prático do sistema Shibboleth fica definida a criação de uma aplicação que tenha
interação com o sistema. Esta aplicação funcionará da seguinte maneira: os usuários que não fazem
parte da federação terão apenas acesso de leitura ao conteúdo protegido; e os usuários já
participantes da federação poderão inserir material sobre o assunto, relatando seus estudos e
experiências.
Na Figura 19 demonstra-se o funcionamento da federação InBrazil. Os usuários do IdP
InBrazil ao requisitarem acesso à aplicação (Passo 1), serão direcionados para a página de
autenticação de seu provedor de identidade, neste caso o IdP InBrazil (Passo 2). Após terem sido
autenticados pelo seu provedor de identidade (Passo 3 e 4), o provedor de identidade envia o handle
correspondente a sua autenticação para o provedor de serviço (Passo 5). O provedor de serviço
utiliza este handle para solicitar atributos sobre o usuário ao provedor de identidade (Passo 6). Após
checar as políticas de liberação de atributos correspondentes ao handle, o provedor de identidade
envia estes atributos para o provedor de serviço (Passo 7). O provedor de serviço encaminha os
atributos para o gerenciador de recurso que fará o controle de acesso baseado nos atributos que
recebeu. Se autorizado, a aplicação será apresentada ao usuário (Passo 8). Como o usuário faz parte
de uma federação, ele será autorizado a inserir documentos na aplicação. Já os usuários que ainda
não possuem um IdP terão acesso apenas de leitura ao site, o download de arquivos também será
permitido, mas a área destinada a upload de documentos ficará restrita. Quando constituírem um
IdP próprio e se tornarem membros da federação InBrazil poderão contribuir com documentos das
pesquisas e práticas com o sistema Shibboleth, desta forma terão acesso à área de upload da
aplicação protegida por Shibboleth.
Figura 19. Federação InBrazil
48
3.2 Componentes Adicionais
Os componentes que serão implementados com intuito de viabilizar um ambiente completo
de Shibboleth são: mecanismo de autenticação, serviço de diretório, controle de políticas de
segurança, gerenciador de recurso e o WAYF (Figura 20).
Figura 20. Ambiente Shibboleth Completo
Fonte: Adaptado de Shibboleth (2006).
O mecanismo de autenticação é o componente responsável por checar as credenciais do
usuário e repassar a confirmação de autenticação para o componente HS do provedor de identidade
(SHIBBOLETH, 2006). Neste ambiente Shibboleth será instalado e configurado o componente
Pubcookie. O Pubcookie é um software open source que fornece SSO, ou seja, um mecanismo de
autenticação única para usuários em aplicações web (PUBCOOKIE, 2006).
O processo de autenticação SSO do Pubcookie utiliza quatro componentes: o browser do
usuário, o servidor Apache, o servidor Pubcookie e o serviço de diretório. O servidor Apache
armazena a aplicação que necessita de autenticação e redireciona os usuários não autenticados para
o servidor Pubcookie. O servidor Pubcookie interage com os usuários para solicitar suas credenciais
49
e verifica-as no serviço de diretório. O serviço de diretório mantém as credenciais e atributos dos
usuários. Durante o processo de autenticação do usuário, o servidor Apache e o servidor Pubcookie
liberam cookies para manter informações de autenticação que possibilitam a funcionalidade de
autenticação única. Estes cookies são enviados e armazenados de maneira segura, já que utilizam a
assinatura digital e a criptografia simétrica para fazer a proteção contra alteração e divulgação dos
seus conteúdos (PUBCOOKIE, 2006).
O serviço de diretório fica encarregado de armazenar todas as informações referentes aos
usuários da aplicação (OPENLDAP, 2006). Estas informações são um conjunto de atributos que
definem as características dos usuários. Por exemplo, a especificação EduPerson define uma
padronização para atributos de usuários de ensino superior. O atributo eduPersonAffiliation da
especificação EduPerson define se o usuário é estudante, visitante ou professor (EDUCAUSE,
2006).
No OpenLDAP, entradas de diretórios são organizadas em uma hierarquia de árvore.
Normalmente, esta estrutura reflete limites geográficos e/ou políticos. Entradas representando
países aparecem no topo da árvore. Abaixo dessas estão as entradas representando estados e
organizações nacionais. Abaixo podem estar entradas representando unidades organizacionais,
pessoas, impressoras, documentos, etc. A árvore também pode ser organizada com base em nomes
de domínio (OPENLDAP, 2006). Neste ambiente proposto será instalada e configurada a
ferramenta OpenLDAP, um software open source, interoperável e recomendado pelo Shibboleth
para fornecer um ambiente necessário para o armazenamento dos atributos dos usuários
(OPENLDAP, 2006).
O gerenciamento do serviço de diretório será realizado através da ferramenta
PHPLDAPADMIN, um aplicativo web open source que permite a integração com o OpenLDAP.
Esta integração permite gerenciar, por meio de uma interface web, a hierarquia de árvore presente
no OpenLDAP, facilitando o serviço de criação das organizações e dos usuários. Além disso, o
PHPLDAPAMIN facilita na definição dos atributos que serão utilizados pelos usuários, tais como,
o atributo uid (login do usuário), o atributo userPassword (senha do usuário) e o atributo
eduPersonAffiliation (PHPLDAPADMIN, 2006).
Segundo Sharpe (2006), o mecanismo de controle de políticas de segurança fica encarregado
de auxiliar os usuários e administradores do provedor de identidade a criarem e manterem os
atributos, bem como definirem as regras de acesso e liberação destes atributos. O software que será
50
implementado é o ShARPE (Shibboleth Attribute Release Policy Editor). O ShARPE é composto
de 2 componentes:
•
SharpeCore - é o principal componente do ShARPE, fica responsável por acessar e
manipular os arquivos de configuração do provedor de identidade; e
•
WebSharpe - responsável por disponibilizar uma interface web para que os usuários e
administradores possam gerenciar os atributos e as regras de liberação de atributos.
O componente WebSharpe é composto de 3 ferramentas: o SPDescription (Service Provider
Description Editor), o ShARPE e o Autograph. O objetivo do SPDescription é permitir que os
administradores do provedor de serviço descrevam os serviços e níveis de serviço fornecidos pelo
provedor de serviço. Além disso, no SPDescription pode ser definida uma lista de atributos
necessários para garantir acesso ao serviço. O ShARPE é responsável pela importação das
informações geradas pelo SPDescription. Estas informações são utilizadas pelos administradores do
provedor de identidade para configurar as regras de liberação dos atributos, necessárias para acessar
um determinado serviço. Finalmente, o Autograph tem como objetivo permitir que os usuários
controlem a liberação de seus atributos (SHARPE, 2006).
O gerenciador de recurso é o componente que faz o controle de acesso ao recurso protegido
por Shibboleth, interceptando as requisições para os recursos e decidindo se concede ou não o
direito de acesso. No shibboleth este componente é limitado, já que fica a cargo da aplicação
examinar e decidir o que fará com os atributos. Portanto, propõe-se adaptar o RM (Resource
Manager – Gerenciador de Recurso) para suportar o controle de acesso da aplicação a ser
desenvolvida (SHIBBOLETH, 2006).
O último componente a ser implementado é o serviço WAYF, este fica responsável por
apresentar ao usuário uma lista de provedores de identidade disponíveis na federação, além disso,
faz o direcionamento do browser do usuário para o mecanismo de autenticação da instituição
selecionada (SHIBBOLETH, 2006).
51
A Figura 21 mostra a interação entre todas as partes do ambiente Shibboleth.
Figura 21. Interação entre Componentes Shibboleth
Fonte: Adaptado de Shibboleth (2006).
3.3 Tecnologias para Implementação
Para o desenvolvimento do projeto serão utilizadas as seguintes tecnologias: PHP, CGI,
XML, SAML, banco de dados MySQL, protocolo LDAP, sistema operacional Linux, OpenSSL e o
sistema Shibboleth.
O PHP (Hypertext Preprocessor) é uma linguagem de programação livre e muito utilizada
para gerar conteúdo dinâmico para sites web. A linguagem pode ser utilizada para desenvolvimento
de pequenos códigos, como também para sistemas que envolvam programação orientada a objetos.
É uma linguagem modularizada, ou seja, seus diversos módulos podem ser agregados a sua
estrutura de acordo com a necessidade do ambiente (PHP, 2006). Esta linguagem foi escolhida
devido a sua facilidade de uso, robustez, conhecimento do desenvolvedor e conectividade com o
banco de dados MySQL e serviço de diretórios LDAP.
O CGI (Common Gateway Interface) é uma tecnologia que permite gerar páginas web
dinâmicas. O programa que utiliza a tecnologia CGI pode ser escrito nas linguagens de
programação Perl, C, Visual Basic, entre outras. O programa CGI é armazenado em um servidor
web e fica aguardando uma requisição que envie os parâmetros necessários para o processamento e
a geração da página web (CGI, 2006). O software Pubcookie utiliza a tecnologia CGI.
Já o XML é uma linguagem de marcação de dados que provê um formato para descrever
dados estruturados. É considerada de grande importância na Internet, pois tem a capacidade de
52
interoperação entre os computadores, já que possui um padrão flexível, aberto e independente de
dispositivo (W3C, 2006). Como alguns documentos de configuração do Shibboleth são baseados
neste formato, torna-se necessário o entendimento desta linguagem.
O SAML é baseado no formato XML, fornece uma forma padronizada para transmitir
informações de autorização e autenticação através de mensagens, chamadas assertions, entre dois
domínios federados. Um dos domínios é o site de origem que autentica os usuários e o outro é o site
destino que controla o acesso aos recursos (TWIKI, 2006).
MySQL é um banco de dados open source, sendo reconhecido pelo seu desempenho,
robustez e também por ser multitarefa e multiusuário. Outra vantagem é sua facilidade de
integração com a linguagem PHP, o que ajuda no desenvolvimento de uma aplicação web
(MYSQL, 2006). Por ser um banco de dados que opera em diferentes tipos de plataformas, tem um
grande número de adeptos, tornando-o um padrão de banco de dados para aplicações web.
O LDAP é um protocolo para acessar serviços de diretórios rodando sobre TCP/IP. O
serviço de diretório é um banco de dados otimizado para ler, navegar e procurar dados. Os
diretórios tendem a conter descritivos, atributos e um suporte sofisticado para filtros. Os serviços de
diretórios geralmente não suportam complicadas transações de registros e grandes volumes de
dados que geralmente são encontradas em sistemas de banco de dados (OPENLDAP, 2006).
Linux é um sistema operacional livre e popular, é composto pelo núcleo ou kernel Linux e
pelas bibliotecas e ferramentas do projeto GNU (LINUX, 2006). Por ser um sistema operacional
livre, atrai vários desenvolvedores e ferramentas que suportam o seu ambiente, tornando-o cada vez
mais interoperável e seguro. Este sistema operacional foi escolhido para o projeto principalmente
pela sua confiabilidade e segurança.
O OpenSSL é uma implementação open source do protocolo SSL (Secure Socket Layer). O
protocolo SSL fornece criptografia dos dados, métodos de autenticação e integridade de mensagens
para transmissão de dados pela Internet. O OpenSSL tem como objetivo principal garantir a
segurança através da criptografia para o estabelecimento de uma conexão segura entre dois
computadores/aplicativos, assegurando a privacidade na conexão, com a utilização da criptografia
assimétrica para negociar uma chave secreta (criptografia simétrica) (OPENSSL, 2006).
O sistema Shibboleth fornece parte da infra-estrutura necessária para implementação do
sistema de gerenciamento de identidades. É o componente principal que precisa estar instalado e
53
configurado para interagir com os componentes adicionais, com a federação e finalmente com a
aplicação.
54
4 DESENVOLVIMENTO
Esta fase dividiu-se em duas grandes etapas: implementar a federação InBrazil e
implementar a aplicação para demonstração do sistema de gerenciamento de identidades
Shibboleth. As próximas seções detalham as etapas da implementação.
4.1 IMPLEMENTAÇÃO DA FEDERAÇÃO
No Capítulo 2 foi demonstrado o funcionamento básico do sistema Shibboleth utilizando-se
a federação TestShib. Os softwares e servidores utilizados para constituir esta infra-estrutura foram
implementados de maneira simplificada, apenas para demonstração do ambiente de testes. Na etapa
de desenvolvimento foi constituída a federação InBrazil, uma infra-estrutura própria que não utiliza
servidores de terceiras partes. Os softwares que já haviam sido implementados tiveram seus
arquivos de configuração modificados para que a comunicação entre os servidores ficasse adequada
a esta nova federação. Com o intuito de garantir a segurança do ambiente de produção, alguns
softwares tiveram suas versões atualizadas, como é o caso do software Shibboleth SP que foi
atualizado da versão 1.3.9 para a 1.3.11. Novos softwares foram implementados e adicionados com
o intuito de completar a infra-estrutura da federação InBrazil.
A federação InBrazil foi constituída utilizando-se três servidores com sistema operacional
Linux, IPs válidos, domínio registrado no Registro.br e os nomes dos servidores cadastrados em um
servidor DNS. O Registro.br é o órgão responsável pelo cadastramento e publicação dos domínios
brasileiros. Segundo REGISTRO.BR (2006), “o DNS é uma base de dados hierárquica, distribuída
para a resolução de nomes de domínios em endereços IP e vice-versa”. Estas configurações foram
necessárias para que todos os servidores da federação InBrazil possam interagir na Internet
utilizando nomes de domínios, facilitando o serviço de configuração. A Figura 22 ilustra os
servidores da federação InBrazil.
Figura 22. Servidores da federação InBrazil
4.1.1 Servidor Provedor de Identidade
O servidor provedor de identidade é o local onde os usuários fazem autenticação e mantêm
armazenados seus atributos. Neste servidor foram instalados os softwares pré-requisitos para o
funcionamento do software Shibboleth IdP e dos componentes adicionais. O software Shibboleth
IdP e os componentes adicionais completam a infra-estrutura deste servidor. A Tabela 1 mostra o
nome e a versão dos softwares implementados no servidor provedor de identidade da federação
InBrazil.
56
Tabela 1. Softwares do servidor provedor de identidade
Nome
Ant
Apache
CGI
JDK (Java 2 Standard Edition Development Kit)
JK (Jakarta Tomcat Connector)
Linux Slackware
OpenLDAP
OpenSSL
Oracle Berkeley DB
PHP
PHPLDAPADMIN
Pubcookie
ShARPE
Shibboleth IdP
Tomcat
Versão
1.6.5
2.0.53
1.1
1.5.0
1.2.15
10.2
2.3.27
0.9.7g
4.2.52
5.0.3
1.0.1
3.3.1
0.7.1
1.3c
5.5.17
Com o objetivo de demonstrar os softwares instalados no provedor de identidade, suas
interações e o processo de funcionamento do software Shibboleth IdP, foi elaborada a Figura 23. O
componente HS (Handle Service) e o componente AA (Attribute Authority) do provedor de
identidade são implementados pelo software Shibboleth IdP, portanto são representados pelo
software Shibboleth IdP. O processo Shibboleth inicia no Passo 1, quando uma requisição
HTTPS/GET na porta 443 proveniente do componente WAYF alcança o Apache, mais
especificamente alcança o diretório SSO (Single Sign-On) configurado no Apache. Este diretório
faz parte da configuração do software Shibboleth IdP e está protegido pelo serviço de autenticação
Pubcookie e para acessá-lo é necessária a autenticação do usuário. Em seguida, o Pubcookie
apresenta ao usuário uma página web com os campos necessários para a digitação de seu login e
password (Passo 2 e 3). Após digitar e enviar as suas credenciais, o Pubcookie checa estas no
serviço de diretório OpenLDAP (Passo 4 e 5). Caso as credenciais estejam corretas, o Pubcookie
invoca a mesma requisição HTTPS/GET na porta 443 que havia chegado ao Apache. Neste
momento, esta requisição consegue alcançar o diretório SSO e consequentemente o Shibboleth IdP
(Passo 6). A partir desta etapa, o Shibboleth IdP cria um handle para identificar a autenticação do
usuário. Este handle é assinado digitalmente e enviado no formato SAML/POST na porta 443 ao
provedor de serviço (Passo 7). Após o provedor de serviço ter validado e ter criado uma sessão para
identificar o handle, é estabelecido um canal SSL entre o provedor de serviço e provedor de
identidade para a troca de mensagens SAML. O provedor de serviço envia uma requisição na porta
57
TCP 8443 ao provedor de identidade, mais especificamente ao Shibboleth IdP para solicitar
atributos do usuário autenticado (Passo 8). O Shibboleth IdP examina o ARP (Attribute Release
Policy), criado com o auxílio da ferramenta ShARPE: se a liberação dos atributos for permitida, o
Shibboleth IdP consulta os atributos do usuário, criados com o auxílio da ferramenta
PHPLDAPADMIN, no serviço de diretório OpenLDAP (Passo 9 e 10) e envia-os para o provedor
de serviço (Passo 11).
Figura 23. Infra-estrutura e funcionamento do servidor provedor de identidade
Fonte: Adaptado de Shibboleth (2006).
58
4.1.1.1 Softwares Pré-Requisitos
O primeiro passo adotado para tornar possível o funcionamento do software Shibboleth IdP
e dos componentes adicionais foi a instalação dos seus softwares pré-requisitos. O primeiro
software pré-requisito instalado foi o sistema operacional Linux Slackware. Este ficou responsável
por garantir segurança e confiabilidade ao ambiente do servidor provedor de identidade. Foi
instalado na modalidade expert, ou seja, um método de instalação que possibilita a seleção de todos
os softwares presentes no CD de instalação.
O segundo software instalado foi o OpenSSL, durante o processo de instalação do sistema
operacional Linux Slackware. Para adicionar suporte SSL aos softwares do provedor de identidade
foi necessário gerar as chaves privada e pública. Este procedimento é apresentado na Figura 24.
openssl genrsa -out shib-idp.dalcoquio.com.br.key 2048
openssl req -new -x509 -nodes -sha1 -days 3650 -key \
shib-idp.dalcoquio.com.br.key > shib-idp.dalcoquio.com.br.crt
Figura 24. Procedimento para gerar as chaves privada e pública
O terceiro software instalado foi o Apache, responsável por processar as requisições HTTP
na porta TCP 80 e HTTPS nas portas TCP 443 e TCP 8443, possibilitando o funcionamento dos
softwares: Shibboleth IdP, PHPLDAPADMIN, Pubcookie e ShARPE. Os procedimentos utilizados
para a instalação do software Apache podem ser identificados na Figura 25.
./configure --enable-so \
--enable-mods-shared=most \
--prefix=/etc/apache \
--enable-ssl \
--with-ssl=/usr/include/openssl
make
make install
Figura 25. Procedimentos de instalação do software Apache
Após a instalação do software Apache, foi necessário configurá-lo para interagir com o
software OpenSSL. Esta configuração exigiu a alteração de dois arquivos: httpd.conf e ssl.conf. No
arquivo httpd.conf foram adicionados os parâmetros conforme mostra a Figura 26.
59
<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
</IfDefine>
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
Figura 26. Parâmetros do software OpenSSL adicionados ao arquivo httpd.conf
No arquivo ssl.conf foram alterados alguns parâmetros para que o Apache processe as
requisições HTTPS nas portas TCP 443 e TCP 8443. A Figura 27 apresenta estas alterações.
Listen 443
Listen 8443
<VirtualHost _default_:443>
ServerName shib-idp.dalcoquio.com.br:443
ServerAdmin [email protected]
SSLCertificateFile /etc/apache/conf/shib-idp.dalcoquio.com.br.crt
SSLCertificateKeyFile /etc/apache/conf/shib-idp.dalcoquio.com.br.key
</VirtualHost>
<VirtualHost _default_:8443>
ServerName shib-idp.dalcoquio.com.br:8443
ServerAdmin [email protected]
SSLCertificateFile /etc/apache/conf/shib-idp.dalcoquio.com.br.crt
SSLCertificateKeyFile /etc/apache/conf/shib-idp.dalcoquio.com.br.key
</VirtualHost>
Figura 27. Parâmetros alterados no arquivo ssl.conf
O quarto software instalado foi o PHP, responsável por interpretar as requisições com
extensão PHP do software PHPLDAPADMIN. O procedimento de instalação do software PHP é
apresentado na Figura 28.
./configure --with-apxs2=/etc/apache/bin/apxs \
--prefix=/etc/apache/php5 \
--with-config-file-path=/etc \
--with-ldap \
--with-gettext=/usr/lib/gettext
make
make install
Figura 28. Procedimento de instalação do software PHP
Após a instalação do software PHP, foi necessário configurá-lo para interagir com o
software Apache. Esta configuração exigiu a alteração de alguns parâmetros do arquivo httpd.conf.
A Figura 29 mostra estas alterações.
60
LoadModule php5_module modules/libphp5.so
DirectoryIndex index.html index.html.var index.php
AddType application/x-httpd-php .php
Figura 29. Parâmetros do software PHP alterados no arquivo httpd.conf
O quinto software instalado foi o CGI, responsável por interpretar as requisições com
extensão CGI do software Pubcookie. O software CGI foi instalado durante o processo de
instalação do software Apache. Para adicionar suporte CGI ao software Apache foi necessário a
alteração de alguns parâmetros do arquivo httpd.conf. Estas alterações são apresentadas na Figura
30.
LoadModule cgi_module modules/mod_cgi.so
Options Indexes FollowSymLinks ExecCGI
DirectoryIndex index.html index.html.var index.php index.cgi
ScriptAlias /cgi-bin/ "/etc/apache/cgi-bin/"
<Directory "/etc/apache/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi
Figura 30. Parâmetros do softtware CGI alterados no arquivo httpd.conf
O sexto software instalado e configurado foi o Tomcat, responsável por interpretar as
requisições dos softwares desenvolvidos em Java, ou seja, executar os softwares: Shibboleth IdP e
ShARPE. A instalação e configuração do software Tomcat é simplificada, pois foi necessário
apenas descompactar o seu pacote de instalação. A Figura 31 mostra este procedimento.
tar –zxvf /var/tomcat-5.5.17/apache-tomcat-5.5.17/apache-tomcat-5.5.17.tar.gz
Figura 31. Procedimento de instalação do software Tomcat
O sétimo software instalado foi o JDK. O JDK é um ambiente de desenvolvimento e
execução de aplicações Java, responsável por fornecer ao software Ant, Shibboleth IdP e Tomcat,
ferramentas e bibliotecas necessárias para a sua execução. A instalação e configuração do software
JDK é simplificada, pois o seu pacote de instalação traz os arquivos compilados e prontos para
execução. A Figura 32 apresenta o procedimento de instalação e configuração do software JDK.
61
ksh /var/jdk-1.5.0/jdk-1_5_0_08-linux-i586.bin
Figura 32. Procedimento de instalação do software JDK
O oitavo software instalado foi o Ant. O Ant é uma ferramenta utilizada para automatizar a
construção do software, similar ao tradicional make, mas escrito na linguagem Java. Outra diferença
entre o software Ant e o make deve-se ao fato de que o Ant é independente de plataforma ou
sistema operacional, já que utiliza seus próprios comandos para a construção do software, enquanto
o make utiliza comandos do sistema operacional (ANT, 2006). O software Ant ficou responsável
por fornecer ferramentas para a construção e instalação dos softwares: ShARPE e Shibboleth IdP.
Os procedimentos adotados para a instalação do software Ant são mostrados na Figura 33.
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/var/jdk-1.5.0/jdk1.5.0_08
export PATH=$PATH:$ANT_HOME/bin
/var/ant-1.6.5/apache-ant-1.6.5/build.sh
Figura 33. Procedimentos de instalação do software Ant
O nono software instalado e configurado foi o Jakarta Tomcat Connector, este ficou
responsável por fazer o controle da comunicação entre o Tomcat e o Apache. Todas as requisições
HTTP e HTTPS são recebidas pelo Apache, sendo que aquelas com código Java são redirecionadas
ao interpretador do Tomcat e as com código HTML, PHP e CGI são tratadas pelo interpretador do
Apache. Os procedimentos de instalação do software Jakarta Tomcat Connector são identificados
na Figura 34.
./configure --with-apxs=/etc/apache/bin/apxs
make
make install
Figura 34. Procedimentos de instalação do software Jakarta Tomcat Connector
Após a instalação do software JK (Jakarta Tomcat Connector), foi necessário configurá-lo
para interagir com os softwares: Apache e Tomcat. Esta configuração exigiu a alteração de três
arquivos: workers.properties, httpd.conf e server.xml O arquivo workers.properties ficou
configurado conforme apresenta a Figura 35.
62
worker.list= ajp13
workers.tomcat_home=/var/tomcat-5.5.17/apache-tomcat-5.5.17
workers.java_home=/var/jdk-1.5.0/jdk1.5.0_08
ps=/
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.lbfactor=50
worker.ajp13.cachesize=10
worker.ajp13.cache_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.recycle_timeout=300
Figura 35. Arquivo workers.properties
No arquivo httpd.conf do software Apache foram alterados alguns parâmetros para que o
Apache possa interagir com o software Jakarta Tomcat Connector. A Figura 36 apresenta estas
alterações.
<IfModule !mod_jk.c>
LoadModule jk_module modules/mod_jk.so
</IfModule>
JkWorkersFile /var/jk-1.2.15/jakarta-tomcat-connectors1.2.15\src/jk/conf/workers.properties
JkLogFile /etc/apache/logs/mod_jk.log
JkLogLevel debug
Figura 36. Parâmetros do software JK adicionados ao arquivo httpd.conf
No arquivo server.xml do software Tomcat foi alterado a tag Connector para que o Tomcat
possa interagir com o software Jakarta Tomcat Connector. A Figura 37 apresenta estas alterações.
<Connector port="8009" address="127.0.0.1" tomcatAuthentication="false"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Figura 37. Parâmetros do software JK alterados no arquivo server.xml
O décimo e último software pré-requisito instalado foi o Oracle Berkeley DB. O Oracle
Berkeley DB é um banco de dados open source que permite alto desempenho e integração com o
software OpenLDAP (ORACLE, 2006). Este ficou responsável por interagir com o software
OpenLDAP para realizar o armazenamento dos atributos dos usuários. O procedimento adotado
para a instalação do software Oracle Berkeley DB é apresentado na Figura 38.
63
cd /var/db-4.2.52/db-4.2.52.NC/build_unix
../dist/configure
make
make install
Figura 38. Procedimento de instalação do software Oracle Berkeley DB
4.1.1.2 Software Shibboleth IdP
O software Shibboleth IdP é o responsável pela troca de mensagens SAML com o servidor
provedor de serviço e pelo controle da liberação dos atributos dos usuários. Após a instalação dos
softwares pré-requisitos foi possível iniciar a instalação do software Shibboleth IdP. A instalação
inicia com a cópia de alguns arquivos JAR (Java Archive), usados pelo software Shibboleth IdP,
para a pasta do software Tomcat. Este procedimento é apresentado na Figura 39.
cp /var/shibboleth-idp-1.3c-install/endorsed/*.jar /var/tomcat-5.5.17/apachetomcat-5.5.17/common/endorsed/
Figura 39. Procedimento inicial de instalação do software Shibboleth IdP
O segundo procedimento adotado foi executar o software Ant para construir e instalar o
software Shibboleth IdP. Este procedimento é mostrado na Figura 40.
cd /var/shibboleth-idp-1.3c-install
./ant
Figura 40. Procedimento de instalação do software Shibboleth IdP
Após a instalação, a localização dos arquivos de configuração do software Shibboleth IdP é
apresentada na Figura 41.
/usr/local/shibboleth-idp/etc
Figura 41. Localização dos arquivos de configuração do software Shibboleth IdP
64
Já a localização do arquivo WAR (Web Archive File) do software Shibboleth IdP é
apresentada na Figura 42. O arquivo WAR fica localizado no diretório do software Tomcat e indica
que o software Shibboleth IdP foi agrupado em único arquivo e está instalado.
/var/tomcat-5.5.17/apache-tomcat-5.5.17/webapps
Figura 42. Localização do arquivo WAR do software Shibboleth IdP
O terceiro procedimento adotado foi a criação do arquivo inbrazil-metadata.xml. Este
arquivo é responsável por prover a base de confiança entre os provedores envolvidos na federação
Shibboleth. Por exemplo, quando um provedor de serviço recebe uma requisição de um provedor de
identidade, o provedor de serviço precisa verificar se o provedor de identidade é realmente quem
diz ser. Isto é feito comparando informações da mensagem SAML recebida com informações
contidas no arquivo de metadata. Quando há uma comparação, o provedor de identidade deve
apresentar as credenciais contidas no arquivo de metadata do provedor de serviço. Se as credenciais
coincidirem, a comunicação entre os provedores é estabelecida, caso contrário nenhum atributo será
enviado (SHIBBOLETH, 2006). O Apêndice A apresenta o arquivo de metadata criado para a
federação InBrazil.
O quarto procedimento adotado foi a configuração dos arquivos do software Shibboleth IdP.
Esta configuração exigiu a alteração de cinco arquivos: idp.xml, arp.site.xml, resolver.xml,
httpd.conf e ssl.conf.
O arquivo idp.xml é o local de configuração primária do software Shibboleth IdP. A Figura
43 presenta uma parte do arquivo idp.xml, mais especificamente a tag IdPConfig com os
parâmetros configurados conforme a necessidade da federação InBrazil. No parâmetro AAUrl foi
configurado a URL do AA (Attribute Authority) do provedor de identidade. No parâmetro
resolverConfig foi configurado a localização do arquivo resolver.xml. Em seguida, no parâmetro
defaultRelyingParty foi configurado o endereço da federação InBrazil. Este parâmetro é utilizado
para especificar uma ou mais RelyingParty ou partes confiáveis (servidores, aplicações ou
federações) em que o provedor de identidade confia para estabelecer uma comunicação segura.
Finalmente, no parâmetro providerId foi configurado a URL do provedor de identidade.
65
<IdPConfig
xmlns="urn:mace:shibboleth:idp:config:1.0"
xmlns:cred="urn:mace:shibboleth:credentials:1.0"
xmlns:name="urn:mace:shibboleth:namemapper:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:idp:config:1.0 ../schemas/shibbolethidpconfig-1.0.xsd"
AAUrl="https://shib-idp.dalcoquio.com.br:8443/shibboleth-idp/AA"
resolverConfig="file:/usr/local/shibboleth-idp/etc/resolver.xml"
defaultRelyingParty="urn:mace:dalcoquio.com.br:inbrazil"
providerId="https://shib-idp.dalcoquio.com.br/shibboleth/inbrazil/idp">
Figura 43. Configuração da tag IdPConfig no arquivo idp.xml
Após configurar a tag IdPConfig, foram especificados os parâmetros das tags RelyingParty,
FileResolver, Path e MetadaProvider, conforme apresenta a Figura 44. Na tag RelyingParty foi
configurado o parâmetro name com o endereço da federação InBrazil e o parâmetro
signingCredential, este parâmetro referencia as chaves privada e pública que serão utilizadas pelo
provedor de identidade da federação InBrazil. Em seguida, na tag FileResolver foi configurado o
parâmetro Id que referencia o provedor de identidade da federação InBrazil. Nas tags Path foram
configuradas as localizações das chaves privada e pública do provedor de identidade InBrazil.
Finalmente, na tag MetadataProvider parâmetro uri foi especificado a localização do arquivo de
metadata.
<RelyingParty name="urn:mace:dalcoquio.com.br:inbrazil"
signingCredential="inbrazil_cred">
<NameID nameMapping="shm"/>
</RelyingParty>
<Credentials xmlns="urn:mace:shibboleth:credentials:1.0">
<FileResolver Id="inbrazil_cred">
<Key>
<Path>file:/etc/apache/conf/shib-idp.dalcoquio.com.br.key</Path>
</Key>
<Certificate>
<Path>file:/etc/apache/conf/shib-idp.dalcoquio.com.br.crt</Path>
</Certificate>
</FileResolver>
</Credentials>
<MetadataProvider
type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata
"uri="file:/usr/local/shibboleth-idp/etc/inbrazil-metadata.xml"/>
Figura 44. Configuração das tags do arquivo idp.xml
O arquivo arp.site.xml é o local de configuração das ARPs (Attribute Release Policy), ou
seja, das regras de liberação dos atributos dos usuários. A Figura 45 mostra o arquivo arp.site.xml,
66
suas tags e os parâmetros especificados conforme a necessidade da federação InBrazil. Na tag rule
iniciou-se uma nova ARP para a aplicação protegida pelo Shibboleth. Na tag Description foi
especificada uma descrição para identificar a regra. Na tag Requester foi configurada a URL do
servidor provedor de serviço, ou seja, a URL do provedor de serviço que está autorizado a receber
os atributos dos usuários. Em seguida, na tag Attribute foi configurado o parâmetro name que
especifica qual atributo pode ser liberado para o provedor de serviço contido na tag Requester.
Finalmente, a tag AnyValue parâmetro release=”permit” define que todos os valores contidos no
atributo definido na tag Attribute parâmetro name serão liberados.
<?xml version="1.0" encoding="UTF-8"?>
<AttributeReleasePolicy xmlns="urn:mace:shibboleth:arp:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:arp:1.0 shibboleth-arp-1.0.xsd">
<Rule>
<Description>Aplicacao Protegida pelo Shibboleth</Description>
<Target>
<Requester>https://shibsp.dalcoquio.com.br/shibboleth/inbrazil/sp</Requester>
<AnyResource/>
</Target>
<Attribute name="urn:mace:dir:attribute-def:eduPersonAffiliation">
<AnyValue release="permit"/>
</Attribute>
</Rule>
</AttributeReleasePolicy>
Figura 45. Arquivo arp.site.xml
O resolver.xml é o arquivo de configuração da conexão do softtware Shibboleth IdP com o
serviço de diretório, bem como da definição dos atributos que serão pesquisados. A Figura 46
apresenta uma parte do arquivo resolver.xml. Na tag SimpleAttributeDefinition foi configurado o
parâmetro id, especificando o atributo que será pesquisado. Na tag DataConnectorDependency foi
configurado o parâmetro requires com o nome do conector de acesso ao serviço de diretório que
será utilizado para pesquisar o atributo definido na tag SimpleAttributeDefinition parâmetro id. Em
seguida, na tag JNDIDirectoryDataConnector iniciou-se a definição do conector de acesso ao
serviço de diretório. No parâmetro id da tag JNDIDirectoryDataConnector foi especificado o nome
do conector de acesso ao serviço de diretório. Na tag Search foi especificado o parâmetro filter com
o filtro da pesquisa, neste caso, o uid (login do usuário). Finalmente, nas tags Property foram
especificados os parâmetros value com as configurações de conexão ao serviço de diretório.
67
<SimpleAttributeDefinition id="urn:mace:dir:attributedef:eduPersonPrimaryAffiliation">
<DataConnectorDependency requires="directory"/>
</SimpleAttributeDefinition>
<JNDIDirectoryDataConnector id="directory">
<Search filter="uid=%PRINCIPAL%">
<Controls returningObjects="false" searchScope="SUBTREE_SCOPE"/>
</Search>
<Property name="java.naming.factory.initial"
value="com.sun.jndi.ldap.LdapCtxFactory"/>
<Property name="java.naming.provider.url" value="ldap://shibidp.dalcoquio.com.br/ou=inbrazil,dc=dalcoquio,dc=com,dc=br"/>
<Property name="java.naming.security.principal"
value="cn=Manager,dc=dalcoquio,dc=com,dc=br"/>
<Property name="java.naming.security.credentials" value="password"/>
</JNDIDirectoryDataConnector>
Figura 46. Configuração das tags do arquivo resolver.xml
No arquivo httpd.conf do Apache foi necessário inserir um parâmetro para que o Apache
redirecione as requisições destinadas ao software Shibboleth IdP ao interpretador do Tomcat. Esta
alteração é mostrada na Figura 47.
JkMount /shibboleth-idp/* ajp13
Figura 47. Parâmetro adicionado ao arquivo httpd.conf
Finalmente, o arquivo ssl.conf do software Apache é o local onde são configurados os
parâmetros que controlam as requisições HTTPS. A Figura 48 apresenta os parâmetros adicionados
ao arquivo ssl.conf para que o Apache possa interagir com o software Shibboleth IdP.
<VirtualHost _default_:443>
<Location /shibboleth-idp/SSO>
require valid-user
</Location>
</VirtualHost>
<VirtualHost _default_:8443>
<Location /shibboleth-idp/AA>
SSLOptions +StdEnvVars +ExportCertData
</Location>
</VirtualHost>
Figura 48. Parâmetros adicionados ao arquivo ssl.conf
68
4.1.1.3 Componentes Adicionais
Os componentes adicionais foram instalados com a finalidade de completar a infra-estrutura
do servidor provedor de identidade. Estes componentes adicionais são: o Pubcookie, o OpenLDAP,
o PHPLDAPADMIN e o ShARPE.
O Pubcookie forneceu à infra-estrutura do servidor provedor de identidade um mecanismo
de autenticação única que interage com o serviço de diretórios OpenLDAP para checar as
credencias dos usuários. O Pubcookie utiliza a tecnologia CGI, portanto foi armazenado no servidor
Apache com suporte a tecnologia CGI. Para a correta integração do Pubcookie com os softwares:
Apache, Shibboleth IdP e OpenLDAP, foram seguidas as etapas de instalação conforme mostra a
Figura 49.
./configure --enable-login \
--prefix=/usr/local/pubcookie \
--enable-apache \
--enable-ldap \
--with-apxs=/etc/apache/bin/apxs \
--with-ssl=/usr/include/openssl
make
make install
Figura 49. Instalação do Pubcookie
A configuração do Pubcookie exigiu a alteração de três arquivos: config, httpd.conf e
ssl.conf. O arquivo config ficou configurado conforme mostra a Figura 50. Nos parâmetros
basic_verifier e ldap_uri foram especificados, respectivamente, o tipo de conexão e o endereço para
conexão ao serviço de diretórios OpenLDAP. Nos parâmetros ssl_key_file, ssl_cert_file,
granting_key_file e granting_cert_file foram especificadas as chaves privada e pública do Apache e
do Pubcookie. Estas configurações tornam-se necessárias para que o Pubcookie possa interagir com
o Apache de forma segura. Em seguida, nos parâmetros login_uri, login_host e enterprise_domain
foram configurados os endereços que serão utilizados para conexão do browser do usuário ao
Pubcookie. No parâmetro keymgt_uri foi configurado a URL e a porta que serão utilizadas pelo
Apache para trocar informações de segurança com o Pubcookie. No parâmetro keyserver_client_list
foi definido o nome do servidor que poderá comunicar de forma segura com o Pubcookie.
Finalmente, nos parâmetros default_l_expire e form_expire_time foram definidos, respectivamente,
o tempo de expiração da sessão de autenticação do usuário e o tempo de expiração da página web
de autenticação.
69
basic_verifier: ldap
ldap_uri: ldap://shibidp.dalcoquio.com.br/ou=inbrazil%2cdc=dalcoquio%2cdc=com%2cdc=br???(uid=%s)?xBindDN=cn=Manager%2cdc=dalcoquio%2cdc=com%2cdc=br,x-Password=secret
ssl_key_file: /etc/apache/conf/shib-idp.dalcoquio.com.br.key
ssl_cert_file: /etc/apache/conf/shib-idp.dalcoquio.com.br.crt
granting_key_file: /usr/local/pubcookie/keys/pubcookie_granting.key
granting_cert_file: /usr/local/pubcookie/keys/pubcookie_granting.crt
login_uri: https://shib-idp.dalcoquio.com.br/cgi-bin/login/index.cgi
login_host: shib-idp.dalcoquio.com.br
enterprise_domain: .dalcoquio.com.br
keymgt_uri: https://shib-idp.dalcoquio.com.br:2222
keyserver_client_list: shib-idp.dalcoquio.com.br
default_l_expire: 8h
form_expire_time: 120
Figura 50. Arquivo config do Pubcookie
No arquivo httpd.conf do Apache foram adicionados alguns parâmetros para que o Apache
possa interagir com o Pubcokie. A Figura 51 apresenta estas alterações.
LoadModule pubcookie_module modules/mod_pubcookie.so
<IfModule mod_pubcookie.c>
PubcookieAuthTypeNames Pubcookie
PubcookieGrantingCertFile /usr/local/pubcookie/keys/pubcookie_granting.crt
PubcookieSessionKeyFile /etc/apache/conf/shib-idp.dalcoquio.com.br.key
PubcookieSessionCertFile /etc/apache/conf/shib-idp.dalcoquio.com.br.crt
PubcookieLogin https://shib-idp.dalcoquio.com.br/cgi-bin/login/index.cgi
PubcookieDomain .dalcoquio.com.br
PubcookieKeyDir /usr/local/pubcookie/keys/
PubcookieLoginMethod POST
PubcookieEncryption AES
</IfModule>
Figura 51. Parâmetros do Pubcookie adicionados no arquivo httpd.conf
Finalmente, no aquivo ssl.conf do Apache foi adicionado o parâmetro AuthType com o tipo
de autenticação a ser utilizada para acessar o diretório SSO. A Figura 52 mostra esta alteração.
<VirtualHost _default_:443>
<Location /shibboleth-idp/SSO>
AuthType Pubcookie
require valid-user
</Location>
</VirtualHost>
Figura 52. Parâmetro do Pubcookie adicionado ao arquivo ssl.conf
O segundo componente adicional instalado foi o OpenLDAP. O OpenLDAP juntamente
com o software Oracle Berkeley DB ficaram responsáveis pelo armazenamento das credenciais e
70
atributos dos usuários. O procedimento adotado para a instalação do OpenLDAP é identificado na
Figura 53.
export CPPFLAGS=-I/usr/local/BerkeleyDB.4.2/include
export LDFLAGS=-L/usr/local/BerkeleyDB.4.2/lib
./configure --enable-wrappers \
--enable-monitor \
--enable-spasswd \
--enable-passwd \
--enable-crypt \
--enable-lmpasswd \
--with-threads \
--enable-dynamic
make
make install
Figura 53. Procedimento de instalação do OpenLDAP
A configuração do OpenLDAP exigiu a criação de dois arquivos: o slapd.conf e o ldap.conf.
O arquivo slapd.conf ficou configurado conforme mostra a Figura 54. No parâmetro include foram
definidas as classes que serão utilizadas pelo OpenLDAP para definir o nome dos atributos dos
usuários, tais como, a classe EduPerson. No parâmetro password-hash foi definido o tipo da função
hashing utilizada para gerar a senha do usuário. Neste caso, a função hashing foi utilizada para
impedir que a senha do usuário seja gravada no formato plaintext (texto claro). Em seguida, no
parâmetro database foi definido o banco de dados utilizado pelo OpenLDAP, neste caso o bdb ou
Oracle Berkeley DB. No parâmetro suffix foi configurado o nome do diretório ou o primeiro nível
na hierarquia do serviço de diretório. Nos parâmetros rootdn e rootpw foram configurados,
respectivamente, o nome do administrador do serviço de diretório e a senha do administrador. No
parâmetro directory foi definido o local de armazenamento da base de dados. Finalmente, no
parâmetro index foram definidos dois índices para agilizar as consultas nos diretórios.
71
include
include
include
include
include
include
include
password-hash
database
suffix
rootdn
rootpw
directory
index
/usr/local/etc/openldap/schema/core.schema
/usr/local/etc/openldap/schema/cosine.schema
/usr/local/etc/openldap/schema/nis.schema
/usr/local/etc/openldap/schema/inetorgperson.schema
/usr/local/etc/openldap/schema/java.schema
/usr/local/etc/openldap/schema/openldap.schema
/usr/local/etc/openldap/schema/eduperson.schema
{SSHA}
bdb
"dc=dalcoquio,dc=com,dc=br"
"cn=Manager,dc=dalcoquio,dc=com,dc=br"
{SSHA}1UF/Y84HpR5ZGt0VzI0I5GXj9taim4I+
/usr/local/var/openldap-data
objectClass,uid eq
Figura 54. Arquivo slapd.conf do OpenLDAP
O arquivo ldap.conf ficou configurado conforme apresenta a Figura 55. No parâmetro base
foi definido o nome do diretório ou o primeiro nível na hierarquia do serviço de diretório. No
parâmetro host foi definido o IP onde se encontra o serviço de diretório. Finalmente, no parâmetro
ssl foi configurado suporte ao protocolo SSL.
base dc=dalcoquio,dc=com,dc=br
host 127.0.0.1
ssl yes
Figura 55. Arquivo ldap.conf do OpenLDAP
Após a configuração dos arquivos do OpenLDAP, foi necessário iniciar a criação da
hierarquia ou das entradas no serviço de diretório. Para criar o primeiro nível da hierarquia foi
necessário gerar o arquivo primeironivel.ldif, o conteúdo deste arquivo é apresentado na Figura 56.
No parâmetro dn foi definido o nome da primeira entrada no serviço de diretório. Nos parâmetros
objectClass foram configuradas as classes de atributos utilizadas para definir os atributos deste
primeiro nível. Nos parâmetros o e dc foram definidas descrições para este primeiro nível.
dn: dc=dalcoquio,dc=com,dc=br
objectClass: dcObject
objectClass: organization
o: Federacao InBrazil
dc: dalcoquio
Figura 56. Arquivo primeironivel.ldif
Finalmente, após criar o arquivo primeironivel.ldif foi possível importá-lo para o serviço de
diretórios OpenLDAP. A Figura 57 apresenta este procedimento.
72
ldapadd -x -D "cn=Manager,dc=dalcoquio,dc=com,dc=br" -W -f primeironivel.ldif
Figura 57. Procedimento de importação do arquivo primeironivel.ldif
O terceiro componente adicional instalado foi o PHPLDAPADMIN. O PHPLDAPADMIN
faz a interação com o OpenLDAP para fornecer uma interface web de cadastramento das entradas
no serviço de diretório, tais como, cadastramento das organizações, dos grupos e dos usuários. O
PHPLDAPADMIN utiliza a linguagem PHP, portanto foi armazenado no servidor Apache com
suporte a linguagem PHP. O procedimento de instalação do PHPLDAPADMIN é simplificado, já
que foi necessário apenas descompactar o seu pacote de instalação e movê-lo para o diretório do
servidor Apache. A Figura 58 apresenta este procedimento.
tar -zxvf /var/phpldapadmin-1.0.1/phpldapadmin-1.0.1.tar.gz
cp –pr /var/phpldapadmin-1.0.1/phpldapadmin-1.0.1 /etc/apache/htdocs/ldap
Figura 58. Procedimento de instalação do PHPLDAPADMIN
Após a instalação do PHPLDAPADMIN, foi necessário configurá-lo para interagir com o
OpenLDAP. Esta configuração exigiu a alteração de algumas variáveis do arquivo config.php. A
Figura 59 apresenta as variáveis alteradas neste arquivo. Estas variáveis foram definidas com as
configurações necessárias para conexão ao serviço de diretório OpenLDAP, tais como, nome do
diretório, nome do administrador do diretório e nome do grupo onde encontram-se os usuários.
$ldapservers->SetValue($i,'server','base',array('dc=dalcoquio,dc=com,dc=br'));
$ldapservers->SetValue($i,'login','dn','cn=Manager,dc=dalcoquio,dc=com,dc=br');
$ldapservers->
SetValue($i,'auto_number','search_base','ou=inbrazil,dc=dalcoquio,dc=com,dc=br');
$ldapservers->SetValue($i,'server','name','InBrazil LDAP Server');
$queries[$q]['base'] = 'dc=dalcoquio,dc=com,dc=br';
Figura 59. Parâmetros alterados no arquivo config.php
A Figura 60 apresenta a tela inicial do PHPLDAPADMIN. Nesta tela foi realizada a
autenticação do usuário administrador do diretório, ou seja, do usuário “Manager”.
73
Figura 60. Tela de autenticação do PHPLDAPADMIN
A Figura 61 apresenta a tela do PHPLDAPADMIN para a criação do grupo inbrazil. Este
grupo foi utilizado para armazenar os usuários da federação InBrazil. Na hierarquia do OpenLDAP,
o grupo inbrazil ficou subordinado ao domínio dalcoquio.com.br.
Figura 61. Tela de criação do grupo inbrazil
74
A Figura 62 apresenta a tela do PHPLDAPADMIN para a criação do usuário
“andre.cordova”. Nesta tela foi definido o nome completo do usuário e as classes de atributos que
serão utilizadas para definir os atributos do usuário, dentre elas, a classe EduPerson. Na hierarquia
do OpenLDAP, os usuários da federação InBrazil ficaram subordinados ao grupo inbrazil.
Figura 62. Tela de criação do usuário “andre.cordova”
75
Finalmente, a Figura 63 apresenta a tela de criação dos atributos do usuário
“andre.cordova”. Estes atributos foram definidos com base nas classes de atributos especificadas na
Figura 62. Os atributos criados foram: cn (nome completo do usuário), givenName (primeiro nome
do usuário), sn (segundo nome do usuário), uid (login do usuário), userPassword (senha do
usuário) e eduPersonAffiliation (grupo do usuário).
Figura 63. Tela de criação dos atributos do usuário “andre.cordova”
O quarto e último componente adicional instalado no servidor provedor de identidade foi o
ShARPE. O ShARPE é dividido em dois componentes: o SharpeCore e o WebSharpe. O
componente SharpeCore ficou responsável por acessar e manipular os arquivos resolver.xml e
arp.site.xml do software Shibboleth IdP. Já o componente WebSharpe é composto por três
ferramentas: SPDescription, ShARPE e Autograph. O SPDescription disponibiliza uma interface
web aos administradores do provedor de identidade. Esta interface é utilizada para a criação de um
arquivo XML que contenha as informações necessárias para acesso à aplicação que está instalada
no provedor de serviço. Por exemplo, o nome da aplicação e os atributos necessários para acessar
esta aplicação. O ShARPE ficou responsável por disponibilizar aos administradores do provedor de
identidade uma interface web que faça a importação do arquivo XML gerado pelo SPDescription. A
partir deste arquivo são criados contratos de comunicação que associam os atributos necessários
76
para acessar a aplicação com os atributos dos usuários do provedor de identidade. Finalmente, o
Autograph disponibiliza uma interface web para que os usuários possam fazer o controle da
liberação de seus atributos. Mesmo após a criação de um contrato de comunicação, o usuário pode
cancelar a liberação de um determinado atributo, como conseqüência poderá não ter acesso à
aplicação. Como o ShARPE foi desenvolvido utilizando-se a linguagem Java, o mesmo foi
instalado no servidor Tomcat.
A instalação do ShARPE inicia com a alteração dos arquivos build.xml e extensionbuild.xml, ambos encontrados no diretório de instalação do software Shibboleth IdP. Nestes
arquivos foi necessário substituir a tag javac parâmetro source de 1.4 para 1.5. Em seguida, para a
construção e instalação do ShARPE foi utilizado o software Ant, conforme mostra a Figura 64.
cd /var/sharpe-0.7.1/Autograph_ShARPE
/var/ant-1.6.5/apache-ant-1.6.5/bin/ant
Figura 64. Procedimento de instalação do ShARPE
Após a instalação do ShARPE, foi necessário configurá-lo para interagir com o Shibboleth
IdP. Esta configuração exigiu a alteração de dois arquivos: idp.xml e httpd.conf. No arquivo
idp.xml do Shibboleth IdP foi necessário excluir a tag ReleasePolicyEngine e substituir pelas tags e
parâmetros mostrados na Figura 65. Esta alteração foi necessária para que o ShARPE possa
manipular os arquivos do Shibboleth IdP que contém as AAPs ou as regras de liberação dos
atributos dos usuários.
77
<ReleasePolicyEngine>
<ArpRepository implementation=
"au.edu.mq.melcoe.mams.sharpe.shib.aa.arp.provider.
MAMSFileSystemArpRepository">
<Path>/usr/local/shibboleth-idp/etc/arps/</Path>
<GroupLookup implementation=
"au.edu.mq.melcoe.mams.sharpe.shib.aa.arp.group.provider.
AttributeResolverGroupLookup">
<UserGroup>urn:mace:dir:attribute-def:eduPersonAffiliation</UserGroup>
</GroupLookup>
<GroupLookup implementation=
"au.edu.mq.melcoe.mams.sharpe.shib.aa.arp.group.provider.
PropertyFileGroupLookup" separator="%PRINCIPAL%.">
<PropertyFile>/usr/local/shibbolethidp/etc/sample.grouplookup.properties</PropertyFile>
<GroupListing>institutionalGroupList</GroupListing>
<GroupListing>groupList</GroupListing>
</GroupLookup>
</ArpRepository>
</ReleasePolicyEngine>
Figura 65. Configurações adicionadas no arquivo resolver.xml
No arquivo httpd.conf do Apache foi necessário inserir alguns parâmetros para que o
Apache redirecione as requisições destinadas aos componentes ShARPE, SPDescription e
Autograph para serem tratadas pelo interpretador do Tomcat. Esta alteração é apresentada na Figura
66.
JkMount /SPDescription/* ajp13
JkMount /ShARPE/* ajp13
JkMount /Autograph/* ajp13
Figura 66. Parâmetros do ShARPE adicionados ao arquivo httpd.conf
78
A Figura 67 apresenta a única tela do componente SPDescription. Nela foi realizada uma
descrição da aplicação protegida pelo Shibboleth, tais como, a URL da aplicação e os atributos
necessários para acessá-la.
Figura 67. Tela do componente SPDescription
79
A Figura 68 apresenta a tela de upload do componente ShARPE. Nela foi realizada a
importação do arquivo XML gerado pelo componente SPDescription.
Figura 68. Tela de upload do componente ShARPE
80
A Figura 69 apresenta a tela dos contratos do componente ShARPE. Nela foi criado um
contrato entre a aplicação protegida pelo Shibboleth e o provedor de identidade. Neste contrato são
apresentados os atributos necessários para acessar a aplicação, bem como os atributos que serão
liberados pelo provedor de identidade.
Figura 69. Tela dos contratos do componente ShARPE
81
A Figura 70 apresenta uma tela do componente Autograph. Nela foi realizada a liberação do
atributo eduPersonAffiliation do usuário “andre.cordova”, este atributo é necessário para acessar a
área de upload da aplicação protegida pelo Shibboleth. Quando o usuário “andre.cordova” acessou
pela primeira vez o componente Autograph foi criado o arquivo arp.user.andre.cordova.xml. Neste
arquivo foram definidas as ARPs ou as regras de liberação dos atributos do usuário. O novo arquivo
atuará como principal nas decisões de liberação dos atributos do usuário “andre.cordova”. O
arquivo arp.site.xml fica como secundário, somente atuará nas decisões de liberação dos atributos
do usuário na falta do arquivo arp.user.andre.cordova.xml.
Figura 70. Tela do componente Autograph, liberando um atributo
82
A Figura 71 apresenta uma tela do componente Autograph. Nela foi realizado o bloqueio do
atributo eduPersonAffiliation do usuário “andre.cordova”. Neste caso o provedor de serviço não
receberá o atributo eduPersonAffiliation do usuário, consequentemente o usuário não terá acesso a
área de upload da aplicação protegida pelo Shibboleth.
Figura 71. Tela do componente Autograph, bloqueando um atributo
4.1.2 Servidor Provedor de Serviço
O servidor provedor de serviço é o local de instalação das aplicações protegidas pelo
Shibboleth. Neste servidor foram instalados os softwares pré-requisitos para o funcionamento do
software Shibboleth SP e do componente adicional RM (Resource Manager – Gerenciador de
Recurso). O software Shibboleth SP e o componente adicional RM completam a infra-estrutura
deste servidor. A Tabela 2 mostra o nome e a versão dos softwares instalados no servidor provedor
de serviço da federação InBrazil.
83
Tabela 2. Softwares do servidor provedor de serviço
Nome
Apache
Linux Fedora
MySQL
OpenSSL
PHP
Shibboleth SP
Versão
2.2.2
5
5.0.22
0.9.8a
5.1.4
1.3.11
Com o objetivo de demonstrar os softwares instalados no provedor de serviço, suas
interações e o processo de funcionamento do software Shibboleth SP, foi elaborada a Figura 72. O
software Shibboleth SP foi dividido em dois componentes: Shibboleth SP module e Shibboleth SP
daemon. O primeiro componente fica instalado no servidor Apache e o segundo componente é
executado em background, como um processo do sistema operacional Linux Fedora. O componente
ACS (Assertion Consumer Service) foi implementado pelo Shibboleth SP module e o componente
AR (Attribute Requester) foi implementado pelo Shibboleth SP daemon. O processo Shibboleth
inicia no Passo 1, quando uma requisição HTTPS/GET na porta 443 do browser do usuário alcança
o componente Shibboleth SP module, mais especificamente o diretório onde está instalada a
aplicação protegida pelo Shibboleth. Como este diretório está protegido pelo Shibboleth, para
acessá-lo é necessário que o usuário esteja autenticado e que um ou mais dos seus atributos sejam
liberados ao provedor de serviço. Neste caso, como o usuário não está autenticado, o mesmo será
redirecionado ao componente WAYF (Passo 2). Após o usuário: selecionar o seu provedor de
identidade; ser redirecionado para o provedor de identidade escolhido; realizar autenticação; e o
Shibboleth IdP ter criado um handle para identificar a autenticação do usuário, este handle é
recebido pelo provedor de serviço (Passo 3). O handle é recebido no formato SAML/POST na porta
443. Em seguida, o componente Shibboleth SP module verifica a assinatura digital do handle e cria
uma sessão para identificá-lo. Através desta sessão o componente shibboleth SP daemon requisita
ao provedor de identidade pela porta TCP 8443 os atributos do usuário necessários para acessar a
aplicação (Passo 4). Esta solicitação e recebimento de atributos são realizados através de mensagens
SAML protegidas por um canal SSL. Caso a liberação dos atributos do usuário for permitida no
provedor de identidade, o provedor de serviço recebe os atributos. Estes atributos passam pelas
AAPs (Attribute Acceptance Police) ou pelas regras de aceitação de atributos. Se forem aceitos, são
repassados ao componente Shibboleth SP module. Este componente executa o primeiro nível do
controle de acesso. Caso o componente Shibboleth SP module autorize o acesso ao diretório, os
84
atributos são repassados ao RM (Resource Manager – Gerenciador de Recurso). O RM utiliza estes
atributos para fazer o segundo nível do controle de acesso e finalmente decidir quais funções da
aplicação o usuário poderá visualizar (Passo 5). A aplicação é apresentada ao usuário (Passo 6).
Figura 72. Infra-estrutura e funcionamento do servidor provedor de serviço
Fonte: Adaptado de Shibboleth (2006).
4.1.2.1 Softwares Pré-Requisitos
O primeiro passo adotado para tornar possível o funcionamento do software Shibboleth SP e
do componente adicional RM foi a instalação dos seus softwares pré-requisitos. O primeiro
software pré-requisito instalado foi o sistema operacional Linux Fedora, este ficou responsável por
garantir segurança e confiabilidade ao ambiente do servidor provedor de serviço.
O segundo software implementado foi o OpenSSL, foi instalado durante o processo de
instalação do sistema operacional Linux Fedora. Para adicionar suporte SSL aos softwares do
provedor de serviço foi necessário gerar as chaves privada e pública Este procedimento é
apresentado na Figura 73.
85
openssl genrsa -out shib-sp.dalcoquio.com.br.key 2048
openssl req -new -x509 -nodes -sha1 -days 3650 -key \
shib-sp.dalcoquio.com.br.key > shib-sp.dalcoquio.com.br.crt
Figura 73. Procedimento para gerar as chaves privada e pública
O terceiro software instalado foi o Apache, este ficou responsável por processar as
requisições HTTP na porta TCP 80 e HTTPS na porta TCP 443, possibilitando o funcionamento
dos softwares: Shibboleth SP module, RM e da aplicação protegida pelo Shibboleth. O
procedimento utilizado para a instalação do software Apache pode ser identificado na Figura 74. O
yum é uma ferramenta utilizada para instalar, atualizar e remover pacotes e suas dependências em
sistemas que suportam arquivos RPM (Red Hat Package Manager).
yum -y install httpd
Figura 74. Procedimento de instalação do software Apache
Após a instalação do software Apache, foi necessário configurá-lo para interagir com o
software OpenSSL. Esta configuração exigiu a alteração de dois arquivos: httpd.conf e ssl.conf. No
arquivo httpd.conf foram adicionados os parâmetros conforme mostra a Figura 75.
LoadModule ssl_module modules/mod_ssl.so
Include conf.d/ssl.conf
Figura 75. Parâmetros do software OpenSSL adicionados ao arquivo httpd.conf
No arquivo ssl.conf foram alterados alguns parâmetros para que o Apache processe as
requisições HTTPS na porta TCP 443. A Figura 76 apresenta estas alterações.
Listen 443
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
ServerName shib-sp.dalcoquio.com.br:443
SSLCertificateFile /etc/pki/tls/certs/shib-sp.dalcoquio.com.br.crt
SSLCertificateKeyFile /etc/pki/tls/private/shib-sp.dalcoquio.com.br.key
</VirtualHost>
Figura 76. Parâmetros alterados no arquivo ssl.conf
86
O quarto software instalado foi o PHP, este ficou responsável por interpretar as requisições
com extensão PHP do componente RM e da aplicação protegida pelo Shibboleth. O procedimento
de instalação do software PHP é apresentado na Figura 77. No comando de instalação do software
PHP foi adicionado o parâmetro php-mysql, este é necessário para que o PHP compile as bibliotecas
para acesso ao banco de dados MySQL. Estas bibliotecas serão utililizadas no desenvolvimento da
aplicação protegida pelo Shibboleth.
yum -y install php php-mysql
Figura 77. Procedimento de instalação do software PHP
Após a instalação do software PHP, foi necessário configurá-lo para interagir com o
software Apache. Esta configuração exigiu a alteração de alguns parâmetros do arquivo httpd.conf.
A Figura 78 mostra estas alterações.
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.html index.html.var index.php
Figura 78. Parâmetros do software PHP alterados no arquivo httpd.conf
O quinto e último software pré-requisito instalado foi o MySQL. O MySQL ficou
responsável por interagir com a aplicação protegida pelo Shibboleth, servindo como banco de dados
para armazenamento dos documentos enviados pelos usuários da federação InBrazil. O
procedimento adotado para a instalação do software MySQL é apresentado na Figura 79.
yum -y install mysql mysql-server
Figura 79. Procedimento de instalação do software MySQL
Após a instalação do software MySQL, foi necessário criar a senha do usuário administrador
do banco de dados e um banco de dados para armazenar os registros gerados pela aplicação
protegida pelo Shibboleth. Estes procedimentos são apresentados na Figura 80.
87
mysqladmin -u root password newpassword
mysqladmin -u root -p create upload
Figura 80. Procedimentos de configuração do software MySQL
4.1.2.2 Software Shibboleth SP
O software Shibboleth SP é o responsável pela proteção da aplicação instalada no servidor
provedor de serviço. Esta proteção é realizada através das informações de autenticação e
autorização recebidas do provedor de identidade. Após a instalação dos softwares pré-requisitos foi
possível iniciar a instalação do software Shibboleth SP. A instalação do software Shibboleth SP foi
feita através de pacotes no formato RPM. O procedimento de instalação é apresentado na Figura 81.
rpm
rpm
rpm
rpm
-ivh
-ivh
-ivh
-ivh
log4cpp-0.3.5rc1-1.i386.rpm
log4cpp-debuginfo-0.3.5rc1-1.i386.rpm
log4cpp-devel-0.3.5rc1-1.i386.rpm
log4cpp-docs-0.3.5rc1-1.i386.rpm
rpm
rpm
rpm
rpm
rpm
-ivh
-ivh
-ivh
-ivh
-ivh
xerces-c-2.6.1-2.i386.rpm
xerces-c-debuginfo-2.6.1-2.i386.rpm
xerces-c-devel-2.6.1-2.i386.rpm
xerces-c-doc-2.6.1-2.i386.rpm
xerces-c-samples-2.6.1-2.i386.rpm
rpm
rpm
rpm
rpm
-ivh
-ivh
-ivh
-ivh
xml-security-c-1.2.0-2.i386.rpm
xml-security-c-debuginfo-1.2.0-2.i386.rpm
xml-security-c-devel-1.2.0-2.i386.rpm
xml-security-c-docs-1.2.0-2.i386.rpm
rpm -ivh opensaml-1.1-6.i386.rpm
rpm -ivh opensaml-debuginfo-1.1-6.i386.rpm
rpm -ivh opensaml-devel-1.1-6.i386.rpm
rpm
rpm
rpm
rpm
-ivh
-ivh
-ivh
-ivh
shibboleth-1.3-11.i386.rpm
shibboleth-debuginfo-1.3-11.i386.rpm
shibboleth-devel-1.3-11.i386.rpm
shibboleth-selinux-policy-targeted-1.3-9.i386.rpm
Figura 81. Procedimento de instalação do software Shibboleth SP
88
A localização dos arquivos de configuração do software Shibboleth SP é apresentada na
Figura 82.
/usr/local/shibboleth-sp/etc/shibboleth/
Figura 82. Localização dos arquivos de configuração do software Shibboleth SP
A configuração do software Shibboleth SP foi realizada através da alteração de três
arquivos: shibboleth.xml, AAP.xml e httpd.conf. O arquivo shibboleth.xml é o local de
configuração primária do software Shibboleth SP. A Figura 83 apresenta uma parte do arquivo
shibboleth.xml, mais especificamente a tag Host parâmetro name com o nome do servidor provedor
de serviço InBrazil.
<RequestMapProvider type="edu.internet2.middleware.
shibboleth.sp.provider.NativeRequestMapProvider">
<RequestMap applicationId="default">
<Host name="shib-sp.dalcoquio.com.br">
<Path name="secure" authType="shibboleth" requireSession="true"
exportAssertion="true">
</Path>
</Host>
</RequestMap>
</RequestMapProvider>
Figura 83. Configuração da tag Host no arquivo shibboleth.xml
Após configurar a tag Host, foi configurado a tag Site, conforme mostra a Figura 84. Na tag
Site foi difinido o parâmetro name com o nome do servidor provedor de serviço InBrazil. Esta tag é
utilizada para definir a tag Alias. Esta tag é responsável por especificar outros nomes para o
servidor provedor de serviço, como no caso da federação InBrazil esta configuração não foi
necessária, a tag Alias foi comentada.
<ISAPI normalizeRequest="true">
<Site id="1" name="shib-sp.dalcoquio.com.br">
<!-- <Alias>example.dalcoquio.com.br</Alias> -->
</Site>
</ISAPI>
Figura 84. Configuração da tag Site no arquivo shibboleth.xml
89
Após configurar a tag Site, foram especificados os parâmetros das tags Applications,
SessionInitiator, MetadataProvider e saml:Audience, conforme apresenta a Figura 85. Na tag
Applications foi configurado o parâmetro providerId com a URL do servidor provedor de serviço
InBrazil. O parâmetro homeURL referencia a URL inicial do servidor provedor de serviço InBrazil.
Em seguida, na tag SessionInitiator foi configurado o parâmetro Id que referencia a federação
InBrazil. Nos parâmetros Location e wayfURL foram configuradas as URLs do servidor WAYF
InBrazil. Na tag MetadataProvider parâmetro uri foi configurada a localização do arquivo inbrazilmetadata.xml. O arquivo inbrazil-metadata.xml foi criado na configuração do software Shibboleth
IdP e precisa ser copiado para o provedor de serviço InBrazil, pois é utilizado por ambos os
provedores. Finalmente, na tag saml:Audience foi configurado o endereço da federação InBrazil.
<Applications id="default" providerId="https://shibsp.dalcoquio.com.br/shibboleth/inbrazil/sp"
homeURL="https://shib-sp.dalcoquio.com.br"
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
<SessionInitiator id="InBrazil" Location="/WAYF/wayf.dalcoquio.com.br"
Binding="urn:mace:shibboleth:sp:1.3:SessionInit"
wayfURL="https://wayf.dalcoquio.com.br/WAYF.php"
wayfBinding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"/>
<MetadataProvider
type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata"
uri="/usr/local/shibboleth-sp/etc/shibboleth/inbrazil-metadata.xml"/>
<saml:Audience>urn:mace:dalcoquio.com.br:inbrazil</saml:Audience>
Figura 85. Configuração das tags no arquivo shibboleth.xml
Nas tags Path foram configuradas as localizações das chaves privada e pública do provedor
de serviço InBrazil. Este procedimento é apresentado na Figura 86.
<CredentialsProvider
type="edu.internet2.middleware.shibboleth.common.Credentials">
<Credentials xmlns="urn:mace:shibboleth:credentials:1.0">
<FileResolver Id="defcreds">
<Key>
<Path>/etc/pki/tls/private/shib-sp-dal.key</Path>
</Key>
<Certificate>
<Path>/etc/pki/tls/certs/shib-sp-dal.crt</Path>
</Certificate>
</FileResolver>
</Credentials>
</CredentialsProvider>
Figura 86. Configuração das tags Path no arquivo shibboleth.xml
90
O arquivo AAP.xml é o local de configuração das AAPs, ou seja, das regras de aceitação
dos atributos dos usuários provenientes do provedor de identidade. A Figura 87 apresenta o arquivo
AAP.xml, suas tags e os parâmetros especificados conforme a necessidade da federação InBrazil.
Na tag AttributeRule iniciou-se uma nova AAP. No parâmetro Name foi configurado o nome do
atributo que será aceito pelo provedor de serviço. Em seguida, na tag SiteRule parâmetro Name foi
configurado a URL do provedor de identidade que está autorizado a enviar o atributo especificado
na tag AttributeRule parâmetro Name para o provedor de serviço.
<AttributeAcceptancePolicy xmlns="urn:mace:shibboleth:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:1.0 /usr/local/shibbolethsp/share/xml/shibboleth/shibboleth.xsd">
<AttributeRule Name="urn:mace:dir:attribute-def:eduPersonAffiliation"
CaseSensitive="false" Header="Shib-EP-Affiliation" Alias="affiliation">
<SiteRule Name="https://shib-idp.dalcoquio.com.br/shibboleth/inbrazil/idp">
<AnyValue/>
</SiteRule>
</AttributeRule>
</AttributeAcceptancePolicy>
Figura 87. Arquivo AAP.xml
Finalmente, no arquivo httpd.conf do Apache foi inserido um parâmetro para que o Apache
instale o componente Shibboleth SP module. Esta alteração é mostrada na Figura 88. O arquivo
shib.conf foi criado na instalação do software Shibboleth SP e não precisou ser alterado.
Include conf.d/shib.conf
Figura 88. Parâmetro adicionado ao arquivo httpd.conf
4.1.2.3 Componentes Adicionais
O componente adicional implementado foi o RM (Resource Manager – Gerenciador de
Recurso), este ficou responsável por interceptar as requisições destinadas à aplicação protegida pelo
Shibboleth e realizar as decisões de controle de acesso baseadas nos atributos dos usuários.
O componente RM foi implementado em duas partes: a primeira parte no componente
Shibboleth SP module e a segunda parte na aplicação protegida pelo Shibboleth. No componente
Shibboleth SP module, o RM foi configurado para interceptar as requisições ao diretório onde se
91
encontra a aplicação protegida pelo Shibboleth e somente autorizar o acesso aos usuários
autenticados ou aos usuários autenticados com o atributo eduPersonAffiliation definido com o valor
“estudante” ou “professor”. Para que o componente Shibboleth SP module faça apenas a
autenticação dos usuários e repasse as decisões de controle de acesso para o RM da aplicação
protegida pelo Shibboleth, foi necessário configurar o arquivo httpd.conf do Apache com o
parâmetro “require valid-user”, esta alteração é mostrada na Figura 89. Para que o componente
Shibboleth SP module faça a autenticação dos usuários e as decisões de controle de acesso, foi
necessário configurar o arquivo httpd.conf do Apache com o parâmetro “require affiliation
estudante professor”, esta alteração é apresentada na Figura 90.
<Location /inbrazil/appl/protected_appl>
AuthType shibboleth
ShibRequireSession On
require valid-user
</Location>
Figura 89. Parâmetro adicionado no arquivo httpd.conf
<Location /inbrazil/appl/protected_shib>
AuthType shibboleth
ShibRequireSession On
require affiliation estudante professor
</Location>
Figura 90. Parâmetro adicionado no arquivo httpd.conf
Na aplicação protegida pelo Shibboleth, o RM foi implementado como uma função. Esta
função recebe os atributos dos usuários e faz as decisões de controle de acesso baseadas no atributo
eduPersonAffiliation. Se o usuário possuir o atributo eduPersonAffiliation definido com o valor
“estudante” ou “professor” terá acesso a aplicação protegida pelo Shibboleth, caso contrário, não
terá acesso.
A comunicação do RM implementado na aplicação protegida pelo Shibboleth com o
software Shibboleth ocorre através da variável global $_SERVER do PHP. Segundo PHP (2006), “a
variável $_SERVER é um array contendo informações como headers, caminhos e localizações dos
scripts PHP”. O Shibboleth disponibiliza os atributos dos usuários nesta variável global do PHP. O
arquivo AAP.xml do Shibboleth controla esta interface com a variável global $_SERVER e mapeia
os atributos dos usuários para headers names. Por exemplo, na federação InBrazil o atributo
eduPersonAffiliation foi mapeado para o header name “HTTP_SHIB_EP_AFFILIATION”. Sendo
92
assim, o componente RM implementado na aplicação protegida pelo Shibboleth consegue acessar
os atributos dos usuários e fazer as decisões de controle de acesso.
A implementação do RM da aplicação protegida pelo Shibboleth é mostrada na Figura 91.
Nesta função, implementada na linguagem PHP, é utilizada a função foreach para verificar o
conteúdo do array $_SERVER (KATHOLIEKE UNIVERSITEIT LEUVEN, 2006). Em seguida, é
verificado o conteúdo do header name “HTTP_SHIB_EP_AFFILIATION”, caso ele possua o valor
“estudante” ou “professor” a variável $authz recebe “TRUE”, isto quer dizer que o usuário terá
acesso à aplicação protegida pelo Shibboleth. Caso contrário a variável $authz recebe “FALSE” e
consequentemente o usuário não terá acesso à aplicação protegida pelo Shibboleth.
function verificaFiliacao() {
$authz = "";
foreach($_SERVER as $chave => $conteudo) {
if ($chave == "HTTP_SHIB_EP_AFFILIATION") {
if ($conteudo == "estudante" || $conteudo == "professor") {
$authz = "TRUE";
}
elseif ($authz != "TRUE") {
$authz = "FALSE";
}
}
}
return $authz;
}
Figura 91. Função “verificaFiliacao” do RM da aplicação protegida pelo Shibboleth
4.1.3 Servidor WAYF
O servidor WAYF é o local de instalação do software WAYF, este é responsável por:
apresentar aos usuários uma relação com os provedores de identidade disponíveis para realizar
autenticação; e redirecioná-los para o provedor de identidade selecionado. Neste servidor foram
instalados os softwares pré-requisitos para o funcionamento do software WAYF. O software
WAYF completa a infra-estrutura deste servidor. A Tabela 3 mostra o nome e a versão dos
softwares implementados no servidor WAYF da federação InBrazil.
93
Tabela 3. Softwares do servidor WAYF
Nome
Apache
Linux Slackware
OpenSSL
PHP
WAYF SWITCHaai
Versão
2.0.59
10.2
0.9.7g
5.0.3
1.5
Com o objetivo de demonstrar os softwares instalados no servidor WAYF, suas interações e
o processo de funcionamento do software WAYF, foi elaborada a Figura 92. O processo Shibboleth
inicia no Passo 1, quando uma requisição HTTPS/GET na porta 443 proveniente do provedor de
serviço alcança o Apache, mais especificamente alcança o software WAYF. O software WAYF
apresenta ao usuário uma página web contendo os provedores de identidade disponíveis na
federação (Passo 2). Após o usuário selecionar o seu provedor de identidade (Passo 3), o software
WAYF envia uma requisição HTTPS/POST na porta 443 para o provedor de identidade selecionado
pelo usuário, levando como parâmetros algumas informações referentes ao provedor de serviço
(Passo 4).
Figura 92. Infra-estrutura e funcionamento do servidor WAYF
Fonte: Adaptado de Shibboleth (2006).
94
4.1.3.1 Softwares Pré-Requisitos
O primeiro passo adotado para tornar possível o funcionamento do software WAYF foi a
instalação dos seus softwares pré-requisitos. O primeiro software pré-requisito instalado foi o
sistema operacional Linux Slackware, responsável por garantir segurança e confiabilidade ao
ambiente do servidor WAYF. Este software foi instalado na modalidade expert, ou seja, um método
de instalação que possibilita a seleção de todos os softwares presentes no CD de instalação.
O segundo software implementado foi o OpenSSL, instalado durante o processo de
instalação do sistema operacional Linux Slackware. Para adicionar suporte SSL aos softwares do
servidor WAYF foi necessário gerar as chaves privada e pública. Este procedimento é apresentado
na Figura 93.
openssl genrsa -out wayf.dalcoquio.com.br.key 2048
openssl req -new -x509 -nodes -sha1 -days 3650 -key \
wayf.dalcoquio.com.br.key > wayf.dalcoquio.com.br.crt
Figura 93. Procedimento para gerar as chaves privada e pública
O terceiro software instalado foi o Apache, este ficou responsável por processar as
requisições HTTP na porta TCP 80 e HTTPS na porta TCP 443, possibilitando o funcionamento do
software WAYF. Os procedimentos utilizados para a instalação do software Apache podem ser
identificados na Figura 94.
./configure --enable-so \
--enable-mods-shared=most \
--prefix=/etc/apache \
--enable-ssl \
--with-ssl=/usr/include/openssl
make
make install
Figura 94. Procedimentos de instalação do software Apache
Após a instalação do software Apache, foi necessário configurá-lo para interagir com o
software OpenSSL. Esta configuração exigiu a alteração de dois arquivos: httpd.conf e ssl.conf. No
arquivo httpd.conf foram adicionados os parâmetros conforme mostra a Figura 95.
95
<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
</IfDefine>
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
Figura 95. Parâmetros do software OpenSSL adicionados ao arquivo httpd.conf
No arquivo ssl.conf foram alterados alguns parâmetros para que o Apache processe as
requisições HTTPS na porta TCP 443. A Figura 96 apresenta estas alterações.
Listen 443
<VirtualHost _default_:443>
DocumentRoot "/etc/apache/htdocs"
ServerName wayf.dalcoquio.com.br:443
SSLCertificateFile /etc/apache/conf/wayf.dalcoquio.com.br.crt
SSLCertificateKeyFile /etc/apache/conf/wayf.dalcoquio.com.br.key
</VirtualHost>
Figura 96. Parâmetros alterados no arquivo ssl.conf
O quarto e último software pré-requisito instalado foi o PHP, este ficou responsável por
interpretar as requisições com extensão PHP do software WAYF. O procedimento de instalação do
software PHP é apresentado na Figura 97.
./configure --with-apxs2=/etc/apache/bin/apxs \
--prefix=/etc/apache/php5 \
--with-config-file-path=/etc \
--with-gettext=/usr/lib/gettext
make
make install
Figura 97. Procedimento de instalação do software PHP
Após a instalação do software PHP, foi necessário configurá-lo para interagir com o
software Apache. Esta configuração exigiu a alteração de alguns parâmetros do arquivo httpd.conf.
A Figura 98 mostra estas alterações.
96
LoadModule php5_module modules/libphp5.so
DirectoryIndex index.html index.html.var index.php
AddType application/x-httpd-php .php
Figura 98. Parâmetros do software PHP alterados no arquivo httpd.conf
4.1.3.2 Software WAYF
O software Shibboleth WAYF é o responsável por apresentar ao usuário uma lista com os
provedores de identidade disponíveis na federação e por redirecioná-los para o provedor de
identidade selecionado. Após a instalação dos softwares pré-requisitos foi possível iniciar a
instalação do software WAYF.
Atualmente, existem dois softwares WAYF disponíveis no site do Shibboleh, o WAYF
desenvolvido por terceiros e o WAYF desenvolvido pela equipe do Shibboleth. Para a federação
InBrazil foi utilizado o software WAYF de terceiros chamado SWITCHaai, já que o mesmo tem
suporte a múltiplas linguagens e foi desenvolvido na linguagem PHP, o que facilita o serviço de
instalação e configuração (SWITCH, 2006). Como o software WAYF foi desenvolvido em PHP, o
mesmo ficou instalado no servidor Apache que possui suporte a linguagem PHP.
O procedimento de instalação do software WAYF é simplificado, já que foi necessário
apenas copiar o seu pacote de instalação para o diretório do servidor Apache e descompactá-lo. A
Figura 99 apresenta este procedimento.
cp wayf-1.5.tar.gz /etc/apache/htdocs
tar –zxvf /etc/apache/htdocs/wayf-1.5.tar.gz
Figura 99. Procedimento de instalação do software WAYF
Após a instalação do software WAYF, foi necessário configurá-lo para interagir com o
provedor de identidade. Esta configuração exigiu a alteração de algumas variáveis de dois arquivos:
IDProvider.conf.php e config.php. A Figura 100 apresenta as variáveis alteradas no arquivo
IDProvider.conf.php. A variável $IDProviders é um array que recebeu os parâmetros: URL da
página de autenticação do usuário no provedor de identidade e uma descrição para o provedor de
identidade.
97
<?php
$IDProviders["urn:mace:dalcoquio.com.br:inbrazil:dalcoquio.com.br"]["SSO"] =
"https://shib-idp.dalcoquio.com.br/shibboleth-idp/SSO";
$IDProviders["urn:mace:dalcoquio.com.br:inbrazil:dalcoquio.com.br"]["Name"] =
"InBrazil IdP";
?>
Figura 100. Variável configurada no arquivo IDProvider.conf.php
As variáveis do arquivo config.php foram definidas conforme apresenta a Figura 101. Na
variável $commonDomain foi configurado o domínio utilizado pela federação InBrazil. Em seguida,
na variável $RelyingParty foi definido o endereço da federação InBrazil.
$commonDomain = '.dalcoquio.com.br';
$RelyingParty = 'urn:mace:dalcoquio.com.br:inbrazil';
Figura 101. Variáveis configuradas no arquivo config.php
4.2 IMPLEMENTAÇÃO DA APLICAÇÃO
A aplicação foi implementada com o objetivo de demonstrar o funcionamento do sistema de
gerenciamento de identidades Shibboleth e da federação InBrazil, apresentando principalmente os
serviços de autenticação e autorização providos pelo Shibboleth e pela federação InBrazil. Esta
aplicação recebeu o nome de Aplicação Básica InBrazil e foi desenvolvida utilizando-se a
linguagem PHP.
A Aplicação Básica InBrazil foi dividida em duas áreas: Download de documentos e
Upload. Na área de Download de documentos qualquer usuário tem acesso (usuário da federação
InBrazil ou visitante), pois não é necessária autenticação para acessar esta área. A área destinada a
Upload foi dividida em duas subáreas: Upload – AuthZ Appl e Upload – AuthZ Shib. Nestas
subáreas somente os usuários autenticados e autorizados terão acesso para fazer upload de
documentos. Para fazer as decisões de controle de acesso foi utilizado o atributo
eduPersonAffiliation que precisa estar definido com o valor “estudante” ou “professor” para
permitir que o usuário faça upload de documentos.
Na subárea Upload – AuthZ Appl, a autenticação do usuário é gerenciada pelo componente
Shibboleth SP module e as decisões de controle de acesso repassadas ao componente RM que foi
98
implementado na Aplicação Básica InBrazil. Já na subárea Upload – AuthZ Shib, tanto a
autenticação como as decisões de controle de acesso são gerenciadas pelo componente Shibboleth
SP module.
4.2.1 Funcionamento da Aplicação
Para demonstrar o funcionamento da área de Upload da Aplicação Básica InBrazil foi
cadastrado o usuário “teste”, com o atributo eduPersonAffiliation definido com o valor “visitante” e
o usuário “andre.cordova”, com o atributo eduPersonAffiliation definido com o valor “estudante”.
No primeiro caso, autenticando com o usuário “teste”, o usuário não terá acesso à área de
upload de documentos. Na subárea Upload – AuthZ Appl, as decisões de controle de acesso são
realizadas pelo componente RM implementado na Aplicação Básica InBrazil, logo o usuário irá
visualizar a página de acesso não autorizado da Aplicação Básica InBrazil. Na subárea Upload –
AuthZ Shib, as decisões de controle de acesso são gerenciadas pelo componente Shibboleth SP
module, portanto o usuário visualizará a página de acesso não autorizado do Shibboleth.
No segundo caso, autenticando com o usuário “andre.cordova”, o usuário terá acesso ao
upload de documentos, já que está autenticado e autorizado. A autorização foi permitida ao usuário,
pois baseado no valor de seu atributo eduPersonAffiliation, tanto o componente Shibboleth SP
module, quanto o componente RM implementado na Aplicação Básica InBrazil permitiram o acesso
ao conteúdo protegido.
O processo de proteção da Aplicação Básica InBrazil, autenticação, autorização e de
controle da liberação dos atributos dos usuários pode ser visualizado através dos arquivos de log
gerados por alguns softwares instalados nos servidores da federação InBrazil. No servidor provedor
de identidade foi gerado três arquivos de log. Estes arquivos foram identificados como:
apache_ssl.log, shib-access.log e shib-error.log. No arquivo apache_ssl.log (exibido no Apêndice
B.1), pode-se identificar as requisições HTTPS/GET e HTTPS/POST que chegam, respectivamente,
ao Apache e ao Pubcookie, bem como a requisição HTTPS/POST para envio dos atributos do
usuário ao provedor de serviço. Já no arquivo shib-access.log (apresentado no Apêndice B.2), é
possível visualizar a confirmação de autenticação do usuário que é enviada ao provedor de serviço,
bem como o nome do atributo que foi liberado ao provedor de serviço. No arquivo shib-error.log
(exibido no Apêndice B.3), pode-se verificar a criação da mensagem SAML que contém o handle
de confirmação da autenticação do usuário. Ainda no arquivo shib-error.log é possível visualizar: a
99
requisição na porta 8443 para solicitar atributos do usuário; a verificação das credenciais do
provedor de serviço que enviou a requisição de atributos; a busca do atributo solicitado no serviço
de diretório; checagem das regras de liberação deste atributo; e envio do atributo ao provedor de
serviço.
No servidor provedor de serviço foi gerado três arquivos de log. Estes arquivos foram
identificados como: apache_ssl.log, shibd.log e transaction.log. No arquivo apache_ssl.log
(apresentado no Apêndice C.1), pode-se identificar as requisições HTTPS/GET de tentativa e
acesso a Aplicação Básica InBrazil, bem como da mensagem, no formato SAML/POST, que chega
ao provedor de serviço com a confirmação de autenticação do usuário. Já no arquivo shibd.log
(exibido no Apêndice C.2), pode-se visualizar a criação da sessão que é utilizada para identificar o
handle que é recebido do provedor de identidade. Ainda neste arquivo é possível identificar a
mensagem SAML enviada ao provedor de identidade para solicitar atributos do usuário. No arquivo
transaction.log (exibido no Apêndice C.3), pode-se identificar, principalmente, o nome do atributo
que foi liberado pelo provedor de identidade e aceito pelo provedor de serviço.
Finalmente, no servidor WAYF foi gerado apenas um arquivo de log. Este arquivo foi
identificado como: apache_ssl.log. No arquivo apache_ssl.log (apresentado no Apêndice D.1),
pode-se identificar a requisição HTTPS/GET proveniente do provedor de serviço e a requisição
HTTPS/POST destinada ao provedor de identidade.
As mensagens SAML utilizadas para confirmar a autenticação do usuário são construídas
através do SAML schema apresentado no Anexo II.
4.2.2 Telas da Aplicação
Esta seção apresentará as telas da aplicação, descrevendo a interface da aplicação com o
usuário e o conjunto das telas da Aplicação Básica InBrazil. Serão apresentados dois exemplos: o
primeiro exemplo utilizando o usuário “teste” para autenticar no provedor de identidade e o
segundo exemplo utilizando o usuário “andre.cordova” para autenticar no provedor de identidade.
100
O primeiro exemplo inicia com a Figura 102 que apresenta a tela inicial da Aplicação Básica
InBrazil. Nela o usuário pode escolher qual das áreas deseja acessar: Download de documentos ou
Upload.
Figura 102. Tela inicial da Aplicação Básica InBrazil
Ao selecionar a área de Download de documentos, o usuário irá visualizar a tela conforme
mostra a Figura 103.
Figura 103. Tela de Download de documentos
101
Caso o usuário selecione a área de Upload, o mesmo será redirecionado para o serviço
WAYF SWITCHaai, conforme mostra a Figura 104. Nesta tela o usuário irá selecionar o seu
provedor de identidade, neste exemplo, o provedor de identidade “InBrazil IdP”.
Figura 104. Tela do componente WAYF SWITCHaai
102
Após selecionar o provedor de identidade “InBrazil IdP”, o usuário será redirecionado para a
página de autenticação, gerada pelo Pubcookie, do provedor de identidade InBrazil, conforme
apresenta a Figura 105. Para realizar a autenticação o usuário deverá digitar as suas credencias,
neste exemplo, login “teste” e password “teste”.
Figura 105. Tela de autenticação Pubcookie
Após o usuário ter realizado a sua autenticação, o provedor de identidade e o provedor de
serviço trocam informações de autenticação e autorização, conforme mostra a Figura 106.
Figura 106. Tela de troca de informações de autenticação e autorização
103
Como o usuário que está tentando acesso a subárea Upload – AuthZ Appl é o usuário “teste”
e o mesmo não possui autorização para acessar esta subárea, será apresentada a tela de acesso não
autorizado da Aplicação Básica InBrazil, conforme mostra a Figura 107. Esta tela foi gerada pela
Aplicação Básica InBrazil, já que as decisões de controle de acesso foram feitas pelo componente
RM implementado na Aplicação Básica InBrazil.
Figura 107. Tela de Upload – AuthZ Appl
Caso o usuário “teste” selecione a subárea Upload – AuthZ Shib, será apresentada a tela
conforme mostra a Figura 108. Esta tela foi montada pelo software Shibboleth SP, já que as
decisões de controle de acesso foram gerenciadas pelo componente Shibboleth SP module.
Figura 108. Tela de Upload – AuthZ Shib
104
O segundo exemplo inicia supondo que o usuário “andre.cordova” tentou acesso a área de
Upload da Aplicação Básica InBrazil e foi redirecionado para o componente WAYF. Em seguida,
selecionou o provedor de identidade “InBrazil IdP” e foi redirecionado para a página de
autenticação, gerada pelo Pubcookie, do provedor de identidade InBrazil. A página de autenticação
do provedor de identidade InBrazil é apresentada na Figura 109. Neste exemplo, o usuário irá
digitar as suas credenciais para realizar a autenticação, ou seja, login “andre.cordova” e password
“inbrazil”.
Figura 109. Tela de autenticação Pubcookie
Após o usuário ter feito a sua autenticação, o provedor de identidade e o provedor de serviço
trocam informações de autenticação e autorização, conforme mostra a Figura 110.
Figura 110. Tela de troca de informações de autenticação e autorização
105
Como o usuário que está tentando acesso a área de Upload é o usuário “andre.cordova” e o
mesmo possui autorização para acessar esta área, será apresentada a tela conforme mostra a Figura
111. Tanto a página gerada com base nas decisões de controle de acesso do RM implementado na
Aplicação Básica InBrazil, quanto a página gerada com base nas decisões de controle de acesso do
componente Shibboleth SP module permitem que o usuário faça upload de documentos.
Figura 111. Tela de Upload
Através dos testes realizados na Aplicação Básica InBrazil foi possível demonstrar o
funcionamento da federação InBrazil, bem como os processos existentes em uma infra-estrutura do
sistema Shibboleth com o objetivo de controlar o acesso a aplicações e proteger as informações dos
usuários.
106
5 CONSIDERAÇÕES FINAIS
O conteúdo teórico pesquisado para o desenvolvimento deste trabalho retrata a importância
de um sistema de gerenciamento de identidades, tanto para proteger as informações sensíveis dos
usuários quanto para melhorar o nível de controle das identidades por parte dos administradores.
O sistema de gerenciamento de identidades Shibboleth além de realizar o controle e a
segurança das identidades permite a proteção de aplicações web através da utilização de
mecanismos de autenticação e autorização. Estas funcionalidades foram demonstradas pela
implementação da federação InBrazil e da Aplicação Básica InBrazil que formaram um ambiente
completo do sistema Shibboleth.
A implementação da federação InBrazil foi realizada em servidores com o hardware
dimensionado para atender poucas requisições, no máximo 40 requisições de login por minuto. Em
um ambiente de produção, que necessite de uma maior quantidade de requisições, recomenda-se o
uso de hardware compatível, por exemplo, processador Xeon ou Opteron, 2GB de memória RAM
(Random Access Memory) e placa de rede gigabit ethernet. Para aumentar a performance e a
disponibilidade deste ambiente é recomendada a utilização de múltiplos servidores com recursos de
balanceamento de carga.
Em países desenvolvidos, o emprego da gerência das identidades é bastante difundido em
universidades, principalmente em sistemas de gerenciamento de conhecimento e e-learning. Para
utilização destes sistemas, os usuários possuem uma única credencial protegida e controlada por um
sistema de gerenciamento de identidades. Sendo assim, este trabalho fica como iniciativa para que
universidades do Brasil apliquem este conceito em seus sistemas.
Este trabalho colabora para a criação de documentação em português sobre gerenciamento
de identidades, já que no Brasil o assunto é pouco explorado e a maior parte da documentação
utilizada para realizar este trabalho foi escrita na língua inglesa.
Como idéia para trabalhos futuros, fica a continuação dos estudos sobre o sistema de
gerenciamento de identidades Shibboleth. O enfoque deste estudo seria a programação, com o
objetivo de desenvolver novas funcionalidades ao sistema Shibboleth e a federação InBrazil. Uma
funcionalidade desejável seria criar uma interface web onde provedores de identidade e provedores
de serviço pudessem ingressar na federação InBrazil de uma maneira simplificada. Neste caso, o
administrador do provedor de identidade ou provedor de serviço poderia realizar um cadastro na
interface web e os arquivos de configuração da federação InBrazil, principalmente o arquivo de
metadata, seria alterado e gerado automaticamente através dos dados que foram digitados pelo
administrador. Deste modo, o serviço de configuração de novos provedores de identidade ou
serviço ingressantes na federação InBrazil seria simplificado.
O uso comercial do sistema de gerenciamento de identidades Shibboleth pode ser
identificado na utilização do Shibboleth pelos softwares educacionais Blackboard e na
interoperabilidade do sistema Shibboleth com o Windows 2003 Server R2 da Microsoft. Neste caso,
um site que utilize o serviço ADFS (Active Directory Federation Services) da Microsoft poderá
participar de uma federação Shibboleth para trocar informações de autenticação e autorização.
A modelagem da Aplicação Básica InBrazil não foi necessária, já que as funcionalidades
desta aplicação são extremamente simples e possuem o intuito apenas de demonstrar o
funcionamento do sistema Shibboleth. O foco deste trabalho é a aplicação prática de um sistema de
gerenciamento de identidades Shibboleth e não uma aplicação complexa que necessite da
modelagem de sofware.
Uma das dificuldades encontradas para o desenvolvimento deste trabalho foi o serviço de
configuração e integração de todos os softwares pré-requisitos para possibilitar o funcionamento do
sistema Shibboleth. Este serviço exigiu conhecimentos de administração de sistemas operacionais e
redes, já que além da configuração dos softwares pré-requisitos foi necessário registrar todos os
servidores em um domínio para que pudessem se comunicar pela Internet.
Considerando os objetivos deste trabalho, pode-se analisar que estes foram cumpridos, tendo
em vista que foram realizados estudos e descritos conceitos referentes à segurança, gerenciamento
de identidades e sistema Shibboleth. Finalmente, foi realizada a implementação da federação
InBrazil e da Aplicação Básica InBrazil para demonstração prática do sistema de gerenciamento de
identidades Shibboleth.
108
REFERÊNCIAS BIBLIOGRÁFICAS
ALBERTIN, Alberto Luiz. Comércio eletrônico: modelo, aspectos e contribuições de sua
aplicação. 3. ed. São Paulo: Atlas, 2001.
ANT. Apache Ant User Manual. Disponível em: <http://ant.apache.org/manual/index.html>.
Acesso em: 02 nov. 2006.
BERNSTEIN, T. et al. Segurança na Internet. Rio de Janeiro: Campus, 1997.
BHARGAV-SPANTZEL, A.; SQUICCIARINI, A. C.; BERTINO, E. Establishing and protecting
digital identity in federation systems. Journal of Computer Security (invited paper), IOSPress,
To Appear, 2006. Disponível em:
<http://homes.cerias.purdue.edu/~bhargav/IdM/jcssubmitColor.pdf>. Acesso em: 01 jun. 2006.
BUEL, Duncan A.; SANDHU, Ravi. Identity management. IEEE Internet Computing, USA, v. 7,
n. 6, p. 26-28, Nov.-Dec. 2003.
CAMENISCH, J. et al. Privacy and identity management for everyone. In: ACM 2005
WORKSHOP ON DIGITAL IDENTITY MANAGEMENT, USA. Proceedings… New York:
ACM Press, 2005, p. 20-27.
CERT.BR. Cartilha de segurança para Internet. [s.l.: s.n.], 2005. Disponível em:
<http://www.cartilha.cert.br/>. Acesso em: 01 abr. 2006.
CGI. The Common Gateway Interface. Disponível em:
<http://hoohoo.ncsa.uiuc.edu/cgi/overview.html>. Acesso em: 01 nov. 2006.
DAMIANI, Ernesto; VIMERCATI, Sabrina De Capitani di; SAMARATI, Pierangela. Managing
multiple and dependable identities. IEEE Internet Computing, USA, v. 7, n. 6, p. 29-37, Nov.Dec. 2003.
DIAS, Cláudia. Segurança e auditoria da tecnologia da informação. Rio de Janeiro: Axcel
Books do Brasil, 2000.
EDUCAUSE. eduPerson Object Class. Disponível em: <http://www.educause.edu/eduperson/>.
Acesso em: 01 jul. 2006.
FINANCIAR. FINANCIAR – selecione sua instituição. Disponível em:
<http://www.financiar.org.br/busca.asp>. Acesso em: 01 jun. 2006.
HANSEN, M.; KRASEMANN, H. Privacy and identity management for Europe – PRIME
white paper. [s.l.: s.n.], 2005. Disponível em: <http://www.primeproject.eu.org/whitepaper/prime/public/press_room/whitepaper/PRIME-Whitepaper-V1.pdf>.
Acesso em: 01 jun. 2006.
IAMSECT. IAMSECT Project. Disponível em: <http://iamsect.ncl.ac.uk/>. Acesso em: 01 jun.
2006.
ICPP/ULD; SNG. Identity management systems (IMS): identification and comparison study. [s.l.:
s.n.], 2003. 305 p. Disponível em:
<http://www.datenschutzzentrum.de/idmanage/study/ICPP_SNG_IMS-Study.pdf>. Acesso em: 31
mar. 2006.
INTERNET2. Internet2 middleware initiative. Disponível em:
<http://middleware.internet2.edu/>. Acesso em: 10 abr. 2006.
KATHOLIEKE UNIVERSITEIT LEUVEN. Documentatie: Programmeertalen. [s.l.: s.n.], 2006.
Disponível em: <https://ludit.kuleuven.be/aai/shibboleth/doc/talen#php>. Acesso em: 01 nov. 2006.
LAUREANO, Marcos Aurélio Pchek. Gestão de segurança da informação. [s.l.: s.n.], 2005.
Disponível em: <http://www.laureano.eti.br/ensino/puc/gst/gestao_da_seguranca_da_informacaov20.pdf>. Acesso em: 10 abr. 2006.
LCC – CENAPAD. Autenticação federativa. Disponível em: <http://www.lcc.ufmg.br/servicosespeciais/autenticacao-federativa.html>. Acesso em: 01 jun. 2006.
LINUX. Linux Documentation. Disponível em: <http://www.linux.org/docs/>. Acesso em: 15
maio 2006.
MAIA, Luiz Paulo. Criptografia e certificação digital. [s.l.: s.n.], 1999. Disponível em:
<http://www.training.com.br/lpmaia/pub_seg_cripto.htm>. Acesso em: 20 abr. 2006.
MICROSOFT TECHNET. Microsoft identity and access management series: at a glance. [s.l.:
s.n.], 2004. Disponível em
<http://www.microsoft.com/technet/security/topics/identity/idmanage/default.mspx>. Acesso em:
25 mar. 2006.
MICROSOFT. Microsoft .NET passport. Disponível em: <http://www.passport.com>. Acesso em:
25 mar. 2006.
MYSQL. MySQL AB Documentation. Disponível em: <http://dev.mysql.com/doc/>. Acesso em:
15 maio 2006.
NETTO, Alvim Antônio de Oliveira. Metodologia da pesquisa científica: guia prático para a
apresentação de trabalhos acadêmicos. Florianópolis: Visual Books, 2005.
NETWORKWORLD. Identity management, single sign on and SAML. Disponível em:
<http://www.networkworld.com/topics/identity-management.html>. Acesso em: 30 mar. 2006.
OPENLDAP. Documentação OpenLDAP. Disponível em: <http://www.ldap.org.br/>. Acesso em:
15 maio 2006.
OPENSSL. OpenSSL Documents. Disponível em: <http://www.openssl.org/docs/>. Acesso em: 01
nov. 2006.
ORACLE. Oracle Berkeley DB Documentation. Disponível em:
<http://www.oracle.com/technology/documentation/berkeley-db/db/index.html>. Acesso em: 02
nov. 2006.
110
PFITZMANN, Birgit; WAIDNER, Michael. Analysis of liberty single-sign-on with enabled clients.
IEEE Internet Computing, USA, v. 7, n. 6, p. 38-44, Nov.-Dec. 2003.
PHP. PHP Documentation. Disponível em: <http://www.php.net/docs.php>. Acesso em: 15 maio
2006.
PHPLDAPADMIN. PHPLDAPADMIN Documentation. Disponível em:
<http://wiki.phpldapadmin.info/tiki-index.php?page=Documentation&bl>. Acesso em: 02 nov.
2006.
PRIME. Project PRIME (privacy and identity management for Europe). Disponível em:
<https://www.prime-project.eu/>. Acesso em: 01 jun. 2006.
PUBCOOKIE. Pubcookie Documentation. Disponível em: <http://www.pubcookie.org/docs/>.
Acesso em: 20 maio 2006.
PURDUE. Identity management and protection. Disponível em:
<http://homes.cerias.purdue.edu/~bhargav/IdM/index.html>. Acesso em: 01 jun. 2006.
REGISTRO.BR. FAQ - DNS. [s.l.: s.n.], 2006. Disponível em: <http://registro.br/faq/faq5.html>.
Acesso em: 03 nov. 2006.
REINERT, Claiton Enilson. Estudo sobre gerenciamento de identidades e acesso à web. 2005.
115 f. (Trabalho de Conclusão de Curso)–Bacharelado em Ciência da Computação, Universidade
do Vale do Itajaí, Itajaí, 2005.
SANDHU, Ravi; SAMARATI, Pierangela. Authentication, access control, and intrusion
detection. [s.1.]: IEEE Communications, 1994.
SHARPE. Shibboleth attribute release policy editor (ShARPE). Disponível em:
<http://federation.org.au/twiki/bin/view/Federation/ShARPE>. Acesso em: 20 maio 2006.
SHIBBOLETH. Shibboleth project. Disponível em: <http://shibboleth.internet2.edu/>. Acesso em:
20 maio 2006.
SILVA, Lino Sarlo da. Public key infrastructure: conheça a infra-estrutura de chaves públicas e a
certificação digital. [s.l.]: Novatec, 2004.
STALLINGS, William. Cryptography and network security: principles and practice. 3. ed. [s.l.]:
Prentice-Hall, 2002.
SWITCH. WAYF Service. Disponível em: <http://www.switch.ch/aai/wayf/>. [s.l.: s.n.], 2006.
Acesso em: 02 nov. 2006.
TESTSHIB. TestShib. Disponível em: <http://www.testshib.org>. Acesso em: 01 jul. 2006.
TWIKI. Shibboleth Wiki. Disponível em: <https://authdev.it.ohiostate.edu/twiki/bin/view/Shibboleth/WebHome>. Acesso em: 20 maio 2006.
W3C. Extensible markup language (XML). Disponível em: <http://www.w3.org/XML/>. Acesso
em: 10 maio 2006.
111
WHEELER, J. Final report – IAMSECT (inter-institutional authorization management to
support e-learning with reference to clinical teaching). Project Report, April 2006. Disponível
em: <http://iamsect.ncl.ac.uk/iamsect_finalv1.pdf>. Acesso em: 01 jun. 2006.
ZHANG, N. et al. Plugging a scalable authentication framework into Shibboleth. In: IEEE
INTERNATIONAL WORKSHOP ON ENABLING TECHNOLOGIES: INFRASTRUCTURES
FOR COLLABORATIVE ENTERPRISES, 14., 2005, Linköpings. Proceedings… Los Alamitos:
IEEE Computer Society Press, 2005, p. 271-276.
112
APÊNDICES
A ARQUIVO DE METADATA
O arquivo inbrazil-metadata.xml ilustrado na Figura 112 contém parâmetros que garantem a
segurança e a comunicação entres os provedores da federação InBrazil, tais como, URL do
provedor de serviço e provedor de identidade, URL da página de autenticação do provedor de
identidade e chave pública do provedor de identidade e provedor de serviço.
<EntitiesDescriptor
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:shibmd="urn:mace:shibboleth:metadata:1.0"
xsi:schemaLocation="urn:oasis:names:tc:SAML:2.0:metadata ../schemas/samlschema-metadata-2.0.xsd
urn:mace:shibboleth:metadata:1.0 ../schemas/shibboleth-metadata-1.0.xsd
http://www.w3.org/2000/09/xmldsig# ../schemas/xmldsig-core-schema.xsd"
Name="urn:mace:dalcoquio.com.br:inbrazil"
validUntil="2010-01-01T00:00:00Z">
<EntityDescriptor entityID="https://shibidp.dalcoquio.com.br/shibboleth/inbrazil/idp">
<IDPSSODescriptor
protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol
urn:mace:shibboleth:1.0">
<Extensions>
<shibmd:Scope>dalcoquio.com.br</shibmd:Scope>
</Extensions>
<KeyDescriptor use="signing">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIDPTCCAqagAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBqjELMAkGA1UEBhMCQlIx
FzAVBgNVBAgTDlNhbnRhIENhdGFyaW5hMQ8wDQYDVQQHEwZJdGFqYWkxETAPBgNV
BAoTCEluQnJhemlsMRQwEgYDVQQLEwtJbkJyYXppbCBDQTEiMCAGA1UEAxMZc2hp
Yi1pZHAuZGFsY29xdWlvLmNvbS5icjEkMCIGCSqGSIb3DQEJARYVY29yZG92YUBt
YXRyaXguY29tLmJyMB4XDTA2MTAxNTIzMzQzMloXDTA3MTAxNTIzMzQzMlowgacx
CzAJBgNVBAYTAkJSMRcwFQYDVQQIEw5TYW50YSBDYXRhcmluYTEPMA0GA1UEBxMG
SXRhamFpMREwDwYDVQQKEwhJbkJyYXppbDERMA8GA1UECxMISW5CcmF6aWwxIjAg
BgNVBAMTGXNoaWItaWRwLmRhbGNvcXVpby5jb20uYnIxJDAiBgkqhkiG9w0BCQEW
FWNvcmRvdmFAbWF0cml4LmNvbS5icjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEAprE/lVv549SpEffhwGfGSJcfsCBzh//6FiSywfLLe56XspMzdBiZ1b8ScMkF
zsG0AL+OTaWPOmHaLqbCL2Y8kyyNaTGEHQ/COCH8GyzpMb6MHsoYh8XGv+PlI3vT
PQwh7Ekn8mGUd9OpV6EDqXWPnmo8QvtgTThHM8NhtgaJRjMCAwEAAaN0MHIwIAYD
VR0RBBkwF4EVY29yZG92YUBtYXRyaXguY29tLmJyMDsGCWCGSAGG+EIBDQQuFixT
aW1wbGVDQSBnZW5lcmF0ZWQgY3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglg
hkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcNAQEEBQADgYEAG88APgugIOIv++Y2aMMZ
D4iyENtTz2YD6enDyI7aHBdbuo3pPGH7w9VA2sjKQ37djFp6TPI5a2ULbhIUA9ew
tl3jqE5H4spXi5kF1qMNyQBhkOnOYz7e8WI+vidhZsT6/Bn1S/xAODeH2cpwYhki
6ZKGywA0JJ58ndLd6aXCVow=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<ArtifactResolutionService index="1"
Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding"
Location="https://shib-idp.dalcoquio.com.br:8443/shibbolethidp/Artifact"/>
<NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>
<SingleSignOnService
Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"
Location="https://shib-idp.dalcoquio.com.br/shibboleth-idp/SSO"/>
</IDPSSODescriptor>
<AttributeAuthorityDescriptor
protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol">
<Extensions>
<shibmd:Scope>dalcoquio.com.br</shibmd:Scope>
</Extensions>
<KeyDescriptor use="signing">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIDPTCCAqagAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBqjELMAkGA1UEBhMCQlIx
FzAVBgNVBAgTDlNhbnRhIENhdGFyaW5hMQ8wDQYDVQQHEwZJdGFqYWkxETAPBgNV
BAoTCEluQnJhemlsMRQwEgYDVQQLEwtJbkJyYXppbCBDQTEiMCAGA1UEAxMZc2hp
Yi1pZHAuZGFsY29xdWlvLmNvbS5icjEkMCIGCSqGSIb3DQEJARYVY29yZG92YUBt
YXRyaXguY29tLmJyMB4XDTA2MTAxNTIzMzQzMloXDTA3MTAxNTIzMzQzMlowgacx
CzAJBgNVBAYTAkJSMRcwFQYDVQQIEw5TYW50YSBDYXRhcmluYTEPMA0GA1UEBxMG
SXRhamFpMREwDwYDVQQKEwhJbkJyYXppbDERMA8GA1UECxMISW5CcmF6aWwxIjAg
BgNVBAMTGXNoaWItaWRwLmRhbGNvcXVpby5jb20uYnIxJDAiBgkqhkiG9w0BCQEW
FWNvcmRvdmFAbWF0cml4LmNvbS5icjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEAprE/lVv549SpEffhwGfGSJcfsCBzh//6FiSywfLLe56XspMzdBiZ1b8ScMkF
zsG0AL+OTaWPOmHaLqbCL2Y8kyyNaTGEHQ/COCH8GyzpMb6MHsoYh8XGv+PlI3vT
PQwh7Ekn8mGUd9OpV6EDqXWPnmo8QvtgTThHM8NhtgaJRjMCAwEAAaN0MHIwIAYD
VR0RBBkwF4EVY29yZG92YUBtYXRyaXguY29tLmJyMDsGCWCGSAGG+EIBDQQuFixT
aW1wbGVDQSBnZW5lcmF0ZWQgY3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglg
hkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcNAQEEBQADgYEAG88APgugIOIv++Y2aMMZ
D4iyENtTz2YD6enDyI7aHBdbuo3pPGH7w9VA2sjKQ37djFp6TPI5a2ULbhIUA9ew
tl3jqE5H4spXi5kF1qMNyQBhkOnOYz7e8WI+vidhZsT6/Bn1S/xAODeH2cpwYhki
6ZKGywA0JJ58ndLd6aXCVow=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAPbinding"
Location="https://shib-idp.dalcoquio.com.br:8443/shibbolethidp/AA"/>
<NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>
</AttributeAuthorityDescriptor>
<Organization>
<OrganizationName xml:lang="en">IdP InBrazil</OrganizationName>
<OrganizationDisplayName xml:lang="en">IdP
InBrazil</OrganizationDisplayName>
115
<OrganizationURL
xml:lang="en">http://www.dalcoquio.com.br/</OrganizationURL>
</Organization>
<ContactPerson contactType="technical">
<SurName>Andre Cordova</SurName>
<EmailAddress>[email protected]</EmailAddress>
</ContactPerson>
</EntityDescriptor>
<EntityDescriptor entityID="https://shibsp.dalcoquio.com.br/shibboleth/inbrazil/sp">
<SPSSODescriptor
protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol">
<KeyDescriptor use="signing">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIE7jCCA9agAwIBAgIJAKqRt5l/XPydMA0GCSqGSIb3DQEBBQUAMIGqMQswCQYD
VQQGEwJCUjEXMBUGA1UECBMOU2FudGEgQ2F0YXJpbmExDzANBgNVBAcTBkl0YWph
aTEbMBkGA1UEChMSSW5CcmF6aWwgRmVkZXJhY2FvMQswCQYDVQQLEwJUSTEhMB8G
A1UEAxMYc2hpYi1zcC5kYWxjb3F1aW8uY29tLmJyMSQwIgYJKoZIhvcNAQkBFhVj
b3Jkb3ZhQG1hdHJpeC5jb20uYnIwHhcNMDYxMDEyMTgzMzQxWhcNMTYxMDA5MTgz
MzQxWjCBqjELMAkGA1UEBhMCQlIxFzAVBgNVBAgTDlNhbnRhIENhdGFyaW5hMQ8w
DQYDVQQHEwZJdGFqYWkxGzAZBgNVBAoTEkluQnJhemlsIEZlZGVyYWNhbzELMAkG
A1UECxMCVEkxITAfBgNVBAMTGHNoaWItc3AuZGFsY29xdWlvLmNvbS5icjEkMCIG
CSqGSIb3DQEJARYVY29yZG92YUBtYXRyaXguY29tLmJyMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA7XHJ/O2hfik5X8c1Nk5aMuBrxNOqPrvf8lIfizBP
BvMQfQT5hV8bD4t9HL6UULMsowXEiM3ORAv9kfPbBp0JIAtqpewlXpftLOoSJbWZ
NWss9THwtVYv2ATLaBzpjkny0V58ZJY1i85wnj9ukWKU8oe9ts/wt7xbAi12n5Ec
9E9aLIpUVxGnesd/8F6RA0UaQuzdLd4KYpxUnLzMPfpdewJcpiZGdln64f9ds94J
q6qtq/hVT7pofyaNHx5zK2GAOt586PLD6pIMM+PlYeRzXVRsPSwHs0EzKe0Lgg1Z
E6D14C/dwHHCHFCj7r8hTwlTcAN/QnyJeUJY9gg/zKXNSQIDAQABo4IBEzCCAQ8w
HQYDVR0OBBYEFC0T90wOKH/oOn3VPzHIuyAb1/LbMIHfBgNVHSMEgdcwgdSAFC0T
90wOKH/oOn3VPzHIuyAb1/LboYGwpIGtMIGqMQswCQYDVQQGEwJCUjEXMBUGA1UE
CBMOU2FudGEgQ2F0YXJpbmExDzANBgNVBAcTBkl0YWphaTEbMBkGA1UEChMSSW5C
cmF6aWwgRmVkZXJhY2FvMQswCQYDVQQLEwJUSTEhMB8GA1UEAxMYc2hpYi1zcC5k
YWxjb3F1aW8uY29tLmJyMSQwIgYJKoZIhvcNAQkBFhVjb3Jkb3ZhQG1hdHJpeC5j
b20uYnKCCQCqkbeZf1z8nTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IB
AQBmvs3+bwLUbH8av8p7GFd4AEkyKpVh6soHq/O3qvwDMFYtZ7lBQc/EbxGL0zXd
OGxTi3PdpiGzbiPwtIqNJiYciq3Wzh3bEF8TBi8CA8I2LJTon5aV3vyReshc4LQF
Vrd5nQRjGeIgvY4MpfSDBVG0mqRJmO30cTx1gNsf40wh9khZRSOx3QOL6AsUEawV
DyE8GBXRCE/LG+kBdia+FeeQqbijAlpMo5Jn/omqslRcwxWJqs2PFlaRt4qRWtIp
d//ooVCzXTaN4w+wuZGJg/0HXSHjxHmO1L71/7Ak1i26S7PNsDmHIM76ycq2U2Co
nZSNs2HwIfDUfAuLT26TAv9M
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>
<AssertionConsumerService index="1" isDefault="true"
Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"
Location="https://shibsp.dalcoquio.com.br/Shibboleth.sso/SAML/POST"/>
<AssertionConsumerService index="2"
Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"
116
Location="https://shibsp.dalcoquio.com.br/Shibboleth.sso/SAML/Artifact"/>
<AssertionConsumerService index="1" isDefault="true"
Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"
Location="https://shib-sp.dalcoquio.com.br/shibbolethsp/Shibboleth.sso/SAML/POST"/>
<AssertionConsumerService index="2"
Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"
Location="https://shib-sp.dalcoquio.com.br/shibbolethsp/Shibboleth.sso/SAML/Artifact"/>
</SPSSODescriptor>
<Organization>
<OrganizationName xml:lang="en">InBrazil SP</OrganizationName>
<OrganizationDisplayName xml:lang="en">InBrazil
SP</OrganizationDisplayName>
<OrganizationURL
xml:lang="en">http://www.dalcoquio.com.br/</OrganizationURL>
</Organization>
<ContactPerson contactType="technical">
<SurName>Andre Cordova</SurName>
<EmailAddress>[email protected]</EmailAddress>
</ContactPerson>
</EntityDescriptor>
</EntitiesDescriptor>
Figura 112. Arquivo inbrazil-metadata.xml
117
B LOGS DO SERVIDOR PROVEDOR DE IDENTIDADE
Os arquivos de log gerados pelos softwares Apache e Shibboleth IdP são identificados nos
apêndices B.1, B.2 e B.3.
B.1. LOG DO APACHE
A Figura 113 apresenta o arquivo apache_ssl.log gerado pelo software Apache que foi
instalado no provedor de identidade.
[09/Nov/2006:00:00:31 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET /shibbolethidp/SSO?shire=https%3A%2F%2Fshib-sp.dalcoquio.com.br%2FShibboleth.sso%2
FSAML%2FPOST&time=1163037600&target=cookie&providerId=https%3A%2F%2Fshibsp.dalcoquio.com.br%2Fshibboleth%2Finbrazil%2Fsp HTTP/1.1" 1495
[09/Nov/2006:00:00:32 -0200] 200.180.83.4 SSLv3 RC4-MD5 "POST /cgibin/login/index.cgi HTTP/1.1" 3684
[09/Nov/2006:00:00:33 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET /cgibin/login/media/pubcookie.css HTTP/1.1" 729
[09/Nov/2006:00:00:41 -0200] 200.180.83.4 SSLv3 RC4-MD5 "POST /cgibin/login/index.cgi HTTP/1.1" 1230
[09/Nov/2006:00:00:42 -0200] 200.180.83.4 SSLv3 RC4-MD5 "POST /PubCookie.reply
HTTP/1.1" 372
[09/Nov/2006:00:00:43 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET /shibbolethidp/SSO?shire=https%3A%2F%2Fshib-sp.dalcoquio.com.br%2FShibboleth.sso%2
FSAML%2FPOST&time=1163037600&target=cookie&providerId=https%3A%2F%2Fshibsp.dalcoquio.com.br%2Fshibboleth%2Finbrazil%2Fsp HTTP/1.1" 6900
[09/Nov/2006:00:00:46 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET /shibbolethidp/main.css HTTP/1.1" [09/Nov/2006:00:00:52 -0200] 200.247.167.26 SSLv3 DHE-RSA-AES256-SHA "POST
/shibboleth-idp/AA HTTP/1.1" 1607
Figura 113. Arquivo apache_ssl.log
B.2. LOG DO SHIBBOLETH
A Figura 114 apresenta o arquivo shib-access.log gerado pelo software Shibboleth IdP.
2006-11-09 00:00:43,658 Authentication assertion issued to provider
(https://shib-sp.dalcoquio.com.br/shibboleth/inbrazil/sp) on
behalf of principal (andre.cordova). Name Identifier:
(_c074fa1029a95689ff1ebd5381f8a646). Name Identifier Format:
(urn:mace:shibboleth:1.0:nameIdentifier).
2006-11-09 00:00:53,225 Attribute assertion generated for provider
(https://shib-sp.dalcoquio.com.br/shibboleth/inbrazil/sp) on
behalf of principal (andre.cordova) with the following attributes:
(urn:mace:dir:attribute-def:eduPersonAffiliation)
2006-11-09 00:00:53,230 Attribute assertion issued to provider (https://shibsp.dalcoquio.com.br/shibboleth/inbrazil/sp) on
behalf of principal (andre.cordova).
Figura 114. Arquivo shib-access.log
B.3. LOG DO SHIBBOLETH
A Figura 115 apresenta o arquivo shib-error.log gerado pelo software Shibboleth IdP.
2006-11-09 00:00:43,600 DEBUG [IdP] 259314732 - Received a request via GET for
location (https://shib-idp.dalcoquio.com.br/shibboleth-idp/SSO).
2006-11-09 00:00:43,602 DEBUG [IdP] 259314732 - Matched handler location:
(https?://[^:/]+(:(443|80))?/shibboleth-idp/SSO).
2006-11-09 00:00:43,603 INFO [IdP] 259314732 - Processing Shibboleth v1.x SSO
request.
2006-11-09 00:00:43,604 DEBUG [IdP] 259314732 - Remote provider has identified
itself as: (https://shib-sp.dalcoquio.com.br/shibboleth/inbrazil/sp).
2006-11-09 00:00:43,605 INFO [IdP] 259314732 - Found matching Relying Party for
group (urn:mace:dalcoquio.com.br:inbrazil).
2006-11-09 00:00:43,605 INFO [IdP] 259314732 - Provider is a member of Relying
Party (urn:mace:dalcoquio.com.br:inbrazil).
2006-11-09 00:00:43,606 INFO [IdP] 259314732 - Supplied consumer URL validated
for this provider.
2006-11-09 00:00:43,607 DEBUG [IdP] 259314732 - Found a supported name
identifier format that matches the metadata for the relying party:
(urn:mace:shibboleth:1.0:nameIdentifier).
2006-11-09 00:00:43,608 DEBUG [IdP] 259314732 - Assigning handle
(_c074fa1029a95689ff1ebd5381f8a646) to principal (andre.cordova).
2006-11-09 00:00:43,609 DEBUG [IdP] 259314732 - User was authenticated via the
default method for this relying party
(urn:oasis:names:tc:SAML:1.0:am:unspecified).
2006-11-09 00:00:43,610 DEBUG [IdP] 259314732 - Responding with POST profile.
2006-11-09 00:00:43,613 DEBUG [IdP] 259314732 - Dumping generated AuthN
Assertion:
2006-11-09 00:00:43,645 DEBUG [IdP] 259314732 - Dumping generated SAML Response:
2006-11-09 00:00:52,022 DEBUG [IdP] -85853010 - Received a request via POST for
location (https://shib-idp.dalcoquio.com.br:8443/shibboleth-idp/AA).
2006-11-09 00:00:52,029 DEBUG [IdP] -85853010 - Dumping generated SAML Request:
2006-11-09 00:00:52,030 DEBUG [IdP] -85853010 - Matched handler location:
(.+:8443/shibboleth-idp/AA).
119
2006-11-09 00:00:52,031 INFO [IdP] -85853010 - Processing SAML v1.1 Attribute
Query request.
2006-11-09 00:00:52,039 INFO [IdP] -85853010 - Request contains credentials:
(1.2.840.113549.1.9.1=#1615636f72646f7661406d61747269782e636f6d2e6272,CN=shibsp.dalcoquio.com.br,OU=TI,O=InBrazil Federacao,L=Itajai,ST=Santa Catarina,C=BR).
2006-11-09 00:00:52,040 INFO [IdP] -85853010 - Remote provider has identified
itself as: (https://shib-sp.dalcoquio.com.br/shibboleth/inbrazil/sp).
2006-11-09 00:00:52,041 INFO [IdP] -85853010 - Metadata found for providerId:
(https://shib-sp.dalcoquio.com.br/shibboleth/inbrazil/sp).
2006-11-09 00:00:52,041 DEBUG [IdP] -85853010 - Attempting to match X509
certificate.
2006-11-09 00:00:52,044 DEBUG [IdP] -85853010 - Match successful.
2006-11-09 00:00:52,045 INFO [IdP] -85853010 - Supplied credentials validated
for this provider.
2006-11-09 00:00:52,046 DEBUG [IdP] -85853010 - Mapping authenticated provider
(https://shib-sp.dalcoquio.com.br/shibboleth/inbrazil/sp) to Relying Party.
2006-11-09 00:00:52,047 INFO [IdP] -85853010 - Found matching Relying Party for
group (urn:mace:dalcoquio.com.br:inbrazil).
2006-11-09 00:00:52,048 INFO [IdP] -85853010 - Provider is a member of Relying
Party (urn:mace:dalcoquio.com.br:inbrazil).
2006-11-09 00:00:52,048 DEBUG [IdP] -85853010 - Name Identifier format:
(urn:mace:shibboleth:1.0:nameIdentifier).
2006-11-09 00:00:52,049 DEBUG [IdP] -85853010 - Attribute Query Handle
recognized.
2006-11-09 00:00:52,050 INFO [IdP] -85853010 - Request is for principal
(andre.cordova).
2006-11-09 00:00:52,051 INFO [IdP] -85853010 - Request does not designate
specific attributes, resolving all available.
2006-11-09 00:00:52,065 DEBUG [IdP] -85853010 - Loading XML from (null) with
Schema validation
2006-11-09 00:00:52,070 DEBUG [IdP] -85853010 - Loading XML from (null) with
Schema validation
2006-11-09 00:00:52,095 DEBUG [IdP] -85853010 - Creating effective ARP from (2)
polic(y|ies).
2006-11-09 00:00:52,583 DEBUG [IdP] -85853010 - Dumping ARP:
2006-11-09 00:00:52,621 DEBUG [IdP] -85853010 - Dumping ARP:
2006-11-09 00:00:52,630 DEBUG [IdP] -85853010 - Computed possible attribute
release set.
2006-11-09 00:00:52,631 DEBUG [IdP] -85853010 - Possible attribute:
urn:mace:dir:attribute-def:eduPersonAffiliation
2006-11-09 00:00:52,632 DEBUG [IdP] -85853010 - Possible attribute:
idp:urn:mace:dir:attribute-def:eduPersonAffiliation
2006-11-09 00:00:52,633 WARN [IdP] -85853010 - No PlugIn registered for
attribute: (idp:urn:mace:dir:attribute-def:eduPersonAffiliation)
2006-11-09 00:00:52,634 INFO [IdP] -85853010 - Resolving attribute:
(urn:mace:dir:attribute-def:eduPersonAffiliation)
2006-11-09 00:00:52,635 DEBUG [IdP] -85853010 - Attribute
(urn:mace:dir:attribute-def:eduPersonAffiliation) depends on connector
(directory).
2006-11-09 00:00:52,681 DEBUG [IdP] -85853010 - Resolving attribute:
(urn:mace:dir:attribute-def:eduPersonAffiliation)
2006-11-09 00:00:52,683 DEBUG [IdP] -85853010 - Found value(s) for attribute
(urn:mace:dir:attribute-def:eduPersonAffiliation).
2006-11-09 00:00:52,688 INFO [IdP] -85853010 - Applying Attribute Release
Policies.
2006-11-09 00:00:52,690 DEBUG [IdP] -85853010 - Processing the following
attributes:
2006-11-09 00:00:52,693 DEBUG [IdP] -85853010 - Attribute:
(urn:mace:dir:attribute-def:eduPersonAffiliation)
2006-11-09 00:00:52,697 DEBUG [IdP] -85853010 - Loading XML from (null) with
Schema validation
2006-11-09 00:00:52,705 DEBUG [IdP] -85853010 - Loading XML from (null) with
Schema validation
2006-11-09 00:00:52,738 DEBUG [IdP] -85853010 - Creating effective ARP from (2)
polic(y|ies).
2006-11-09 00:00:53,203 DEBUG [IdP] -85853010 - Dumping ARP:
2006-11-09 00:00:53,222 DEBUG [IdP] -85853010 - Dumping ARP:
2006-11-09 00:00:53,224 INFO [IdP] -85853010 - Found 1 attribute(s) for
120
andre.cordova
2006-11-09 00:00:53,229 DEBUG [IdP] -85853010 - Dumping generated SAML Response:
2006-11-09 00:00:53,230 INFO [IdP] -85853010 - Successfully created response
for principal (andre.cordova).
Figura 115. Arquivo shib-error.log
121
C LOGS DO SERVIDOR PROVEDOR DE SERVIÇO
Os arquivos de log gerados pelos softwares instalados no servidor provedor de serviço são
identificados nos apêndices C.1, C.2 e C.3.
C.1. LOG DO APACHE
A Figura 116 apresenta o arquivo apache_ssl.log gerado pelo software Apache que foi
instalado no servidor provedor de serviço.
[09/Nov/2006:00:00:00 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/inbrazil/appl/protected_appl/upload.php HTTP/1.1" 509
[09/Nov/2006:00:00:48 -0200] 200.180.83.4 SSLv3 RC4-MD5 "POST
/Shibboleth.sso/SAML/POST HTTP/1.1" 346
[09/Nov/2006:00:00:50 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/inbrazil/appl/protected_appl/upload.php HTTP/1.1" 1641
Figura 116. Arquivo apache_ssl.log
C.2. LOG DO SHIBBOLETH
A Figura 117 apresenta o arquivo shibd.log gerado pelo software Shibboleth SP.
2006-11-09 00:00:48 INFO Shibboleth.Trust.Basic [192] sessionNew: signature
verified with KeyDescriptor
2006-11-09 00:00:48 INFO shibtarget.Listener [192] sessionNew: creating new
session
2006-11-09 00:00:48 INFO shibtarget.SessionCache [192] sessionNew: new session
created with session ID (_62d912ab7a24ab62a94358c2d386d0de)
2006-11-09 00:00:50 INFO shibtarget.SessionCache [193] sessionGet: trying to get
new attributes for session (ID=_62d912ab7a24ab62a94358c2d386d0de)
2006-11-09 00:00:50 INFO SAML.SAMLSOAPHTTPBinding [193] sessionGet: sending SOAP
message to https://shib-idp.dalcoquio.com.br:8443/shibboleth-idp/AA
2006-11-09 00:00:50 INFO Shibboleth.Trust.Basic [193] sessionGet: certificate
match found in KeyDescriptor
Figura 117. Arquivo shibd.log
C.3. LOG DO SHIBBOLETH
A Figura 118 apresenta o arquivo transaction.log gerado pelo software Shibboleth SP.
2006-11-09 00:00:48 INFO Shibboleth-TRANSACTION : New session (ID:
_62d912ab7a24ab62a94358c2d386d0de) with (applicationId: default) for principal
from (IdP: https://shib-idp.dalcoquio.com.br/shibboleth/inbrazil/idp) at
(ClientAddress: 200.180.83.4) with (NameIdentifier:
_c074fa1029a95689ff1ebd5381f8a646)
2006-11-09 00:00:50 INFO Shibboleth-TRANSACTION : Making attribute query for
session (ID: _62d912ab7a24ab62a94358c2d386d0de) on (applicationId: default) for
principal from (IdP: https://shib-idp.dalcoquio.com.br/shibboleth/inbrazil/idp)
2006-11-09 00:00:52 INFO Shibboleth-TRANSACTION : Caching the following
attributes after AAP applied for session (ID: _62d912ab7a24ab62a94358c2d386d0de)
on (applicationId: default) for principal from (IdP: https://shibidp.dalcoquio.com.br/shibboleth/inbrazil/idp) {
2006-11-09 00:00:52 INFO Shibboleth-TRANSACTION :
urn:mace:dir:attributedef:eduPersonAffiliation (1 values)
2006-11-09 00:00:52 INFO Shibboleth-TRANSACTION : }
2006-11-09 00:00:52 INFO Shibboleth-TRANSACTION : Successful attribute query for
session (ID: _62d912ab7a24ab62a94358c2d386d0de)
Figura 118. Arquivo transaction.log
123
D LOG DO SERVIDOR WAYF
O arquivo de log gerado pelo software instalado no servidor WAYF é identificado no
apêndice D.1.
D.1. LOG DO APACHE
A Figura 119 apresenta o arquivo apache_ssl.log gerado pelo software Apache que foi
instalado no servidor WAYF.
[09/Nov/2006:00:00:03 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/WAYF.php?shire=https%3A%2F%2Fshib-sp.dalcoquio.com.br%2FShibboleth.sso%2FSAML%2
FPOST&time=1163037600&target=cookie&providerId=https%3A%2F%2Fshibsp.dalcoquio.com.br%2Fshibboleth%2Finbrazil%2Fsp HTTP/1.1" 6040
[09/Nov/2006:00:00:05 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/topcenter.gif HTTP/1.1"
[09/Nov/2006:00:00:08 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/topleft.gif HTTP/1.1"
[09/Nov/2006:00:00:09 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/topright.gif HTTP/1.1"
[09/Nov/2006:00:00:10 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/middleleft.gif HTTP/1.1"
[09/Nov/2006:00:00:10 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/middleright.gif HTTP/1.1"
[09/Nov/2006:00:00:11 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/bottomcenter.gif HTTP/1.1"
[09/Nov/2006:00:00:12 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/bottomright.gif HTTP/1.1"
[09/Nov/2006:00:00:20 -0200] 200.180.83.4 SSLv3 RC4-MD5 "GET
/images/bottomleft.gif HTTP/1.1"
[09/Nov/2006:00:00:23 -0200] 200.180.83.4 SSLv3 RC4-MD5 "POST
/WAYF.php?shire=https%3A%2F%2Fshib-sp.dalcoquio.com.br%2FShibboleth.sso%2FSAML%2
FPOST&time=1163037600&target=cookie&providerId=https%3A%2F%2Fshibsp.dalcoquio.com.br%2Fshibboleth%2Finbrazil%2Fsp HTTP/1.1"
Figura 119. Arquivo apache_ssl.log
ANEXOS
I LISTA DE APLICAÇÕES E SERVIÇOS QUE UTILIZAM O
SHIBBOLETH
Organization / URL
Contact
Comments
Blackboard
www.blackboard.com
Chris Etesse
[email protected]
Production
Blackboard has the ability to
consume Shibboleth credentials.
Bodington.org
bodington.org
Bodington.org
[email protected]
Production
Open Source
sourceforge.net/projects/bodington/
Bodington is open source software
that the worldwide academic
community can use for free and
can contribute to its development.
Bodington powers virtual learning
environments in the UK and
worldwide.
Bodington is being used by
educational institutions, including:
University of the Highlands and
Islands, University of Leeds,
University of Oxford, University of
Manchester, Eton College and
Yorkshire Coast College.
As of the 2.4 release series,
Bodington has Shib IdP
functionality out of the box. With
users in the Bodington local
database, you can easily manage a
set of users for your IdP and can
even point Bodington to
authenticate those users via an
external LDAP store through a
simple xml configuration file.
Bodington is also a very quick and
easy way to test Shib IdP functions
through a simple install process.
Darwin Streaming Server
Gary Chapman
[email protected]
Production
Open Source
An Open Source version of Apple's
Quicktime Streaming Server has
been shib-enabled by Gary and
Jerome at NYU.
Jerome McDonough
[email protected]
Digitalbrain PLC
www.digitalbrain.com
Customer Support Team
[email protected]
Production
Digitalbrain is a UK based
provider of virtual learning
envionments (VLE). Their VLE
can fully participate in a federation
as both an IdP and/or an SP
Production
Shibboleth authentication is now
available for EBSCOhost
databases.
EBSCO Publishing
www.epnet.com/default.asp
Alison Galati, Service Engineer
[email protected]
support.epnet.com
Technical Support
[email protected]
Elsevier ScienceDirect
www.sciencedirect.com
Ale de Vries
[email protected]
Production
Shibboleth authentication is now in
production and available on
ScienceDirect.
ExLibris - SFX
Oren Beit-Arie
[email protected]
Development
ExLibris - SFX plans to do testing
this summer. They will be looking
for campuses to work with.
Fedora
www.fedora.info
Ronda A. Grizzle
[email protected]
Development
OpenSource Project
Shibboleth will be incorporated in
V.2 of Fedora due Q4 2004.
Horde
www.protectnetwork.org/horde.html
Horde Shibboleth Team
[email protected]
Development
OpenSource Project
Module has been delivered this to
the Horde Project but not sure
when they will include it as part of
their standard release...
Hupnet
hupnet.sourceforge.net
Viljo Viitanen
[email protected]
Production
OpenSource Project
Hupnet (Helsinki University Public
Network) is a free network access
controller (NAC) software using
WWW authentication, especially
Shibboleth.
ILIAS
www.ilias.de
Alex Killling
Lead Developer
[email protected]
Testing
OpenSource Project
ILIAS is an open source web-based
learning management system.
ILIAS 3.5 contains Shibboleth
support and will be released soon.
The Shibboleth attributes are used
for authentication and for
automatically creating user
accounts.
more...
JSTOR
www.jstor.org
Stephen Martin, JSTOR User
Services Technical Assistant
Testing
JSTOR is testing access via Shib
127
Moodle
www.moodle.org
[email protected]
1.1
Martin Dougiamas
Moodle Lead Developer
[email protected]
Testing
OpenSource Project
Moodle is an open source webbased learning management
system.
Shibboleth is supported bye
Moodle version 1.5 onward. The
Shibboleth attributes are used for
authentication and for
automatically creating user
accounts.
more...
Shibboleth module developers:
Markus Hagman
[email protected]
Lukas Haemmerle
[email protected]
Napster
www.napster.com
William Pence
[email protected]
Production
Napster is in production use.
NSDL
David Milman
[email protected]
Production
OCLC
The Shibboleth Support Team
[email protected]
Production
Shibboleth authentication is now in
production and available for OCLC
FirstSearch.
OLAT - Online Learning and
Training
www.olat.org
[email protected]
Production
In production at universities in
Switzerland.
Open Source
Includes integrated, Java-based
Shibboleth 1.3 Target
implementation including WAYF
server.
Shibboleth attributes are
propagated within the LMS for
customization and access control.
ProQuest Information and
Learning
www.il.proquest.com
Rodger Miller
[email protected]
Development
ProQuest is working on a
Shibbolether pilot with a few
campus members.
Serials Solutions, Inc.
www.serialssolutions.com
JR Jenkins
[email protected]
Development
Will begin testing in Q4 of 2005
for it's hosted application suite.
SYMPA
www.sympa.org
Olivier Salaun
[email protected]
Production
Open source
Shib user attributes are used by
Sympa for both customization and
access control
128
Thomson Gale
www.gale.com
Gary Pollack
[email protected]
TWiki
Testing
Thomson Gale has released
Shibboleth authentication services
for its databases and is testing in
production.
Production
Open Source
Useful Utilities - EZproxy
www.usefulutilities.com
Chris Zagar
[email protected]
Pilot
A beta version of EZproxy that
acts as a Service Provider is
available for testing.
WebAssign
www.webassign.net
Brian Marks
[email protected]
Production
WebAssign, a homework and
grading service for higher ed math
and sciences courses, is currently
servicing several universities using
Shibboleth both for student/faculty
authentication and for roster
creation. We encourage
universities using WebAssign to
contact us about Shibboleth
integration
WebCT
www.webct.com/standards
Mark Wilcox
[email protected]
Production
WebCT supports Shibboleth with
both Campus Edition and Vista
products. Please contact us to
obtain a copy of the
Shibboleth/WebCT integration
guide.
129
II SAML SCHEMA DE CONFIRMAÇÃO DE AUTENTICAÇÃO
DO USUÁRIO
<saml:Assertion
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
MajorVersion="1" MinorVersion="1"
AssertionID="a75adf55-01d7-40cc-929f-dbd8372ebdfc"
IssueInstant="2004-12-05T09:22:02Z"
Issuer="https://idp.example.org/shibboleth">
<saml:Conditions
NotBefore="2004-12-05T09:17:02Z"
NotOnOrAfter="2004-12-05T09:27:02Z">
<saml:AudienceRestrictionCondition>
<saml:Audience>http://sp.example.org/shibboleth</saml:Audience>
</saml:AudienceRestrictionCondition>
</saml:Conditions>
<saml:AuthenticationStatement
AuthenticationInstant="2004-12-05T09:22:00Z"
AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password">
<saml:Subject>
<saml:NameIdentifier
Format="urn:mace:shibboleth:1.0:nameIdentifier"
NameQualifier="https://idp.example.org/shibboleth">
3f7b3dcf-1674-4ecd-92c8-1544f346baf8
</saml:NameIdentifier>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:bearer
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
</saml:Subject>
</saml:AuthenticationStatement>
</saml:Assertion>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#c7055387-af61-4fce-8b98-e2927324b306">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped409
signature"/>
<ds:Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces
PrefixList="#default saml samlp ds xsd xsi"
xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>TCDVSuG6grhyHbzhQFWFzGrxIPE=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
x/GyPbzmFEe85pGD3c1aXG4Vspb9V9jGCjwcRCKrtwPS6vdVNCcY5rHaFPYWkf+5
EIYcPzx+pX1h43SmwviCqXRjRtMANWbHLhWAptaK1ywS7gFgsD01qjyen3CP+m3D
w6vKhaqledl0BYyrIzb4KkHO4ahNyBVXbJwqv5pUaE4=
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIICyjCCAjOgAwIBAgICAnUwDQYJKoZIhvcNAQEEBQAwgakxCzAJBgNVBAYTAlVT
MRIwEAYDVQQIEwlXaXNjb25zaW4xEDAOBgNVBAcTB01hZGlzb24xIDAeBgNVBAoT
F1VuaXZlcnNpdHkgb2YgV2lzY29uc2luMSswKQYDVQQLEyJEaXZpc2lvbiBvZiBJ
bmZvcm1hdGlvbiBUZWNobm9sb2d5MSUwIwYDVQQDExxIRVBLSSBTZXJ2ZXIgQ0Eg
LS0gMjAwMjA3MDFBMB4XDTAyMDcyNjA3Mjc1MVoXDTA2MDkwNDA3Mjc1MVowgYsx
CzAJBgNVBAYTAlVTMREwDwYDVQQIEwhNaWNoaWdhbjESMBAGA1UEBxMJQW5uIEFy
Ym9yMQ4wDAYDVQQKEwVVQ0FJRDEcMBoGA1UEAxMTc2hpYjEuaW50ZXJuZXQyLmVk
dTEnMCUGCSqGSIb3DQEJARYYcm9vdEBzaGliMS5pbnRlcm5ldDIuZWR1MIGfMA0G
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZSAb2sxvhAXnXVIVTx8vuRay+x50z7GJj
IHRYQgIv6IqaGG04eTcyVMhoekE0b45QgvBIaOAPSZBl13R6+KYiE7x4XAWIrCP+
c2MZVeXeTgV3Yz+USLg2Y1on+Jh4HxwkPFmZBctyXiUr6DxF8rvoP9W7O27rhRjE
pmqOIfGTWQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDANBgkq
hkiG9w0BAQQFAAOBgQBfDqEW+OI3jqBQHIBzhujN/PizdN7s/z4D5d3pptWDJf2n
qgi7lFV6MDkhmTvTqBtjmNk3No7v/dnP6Hr7wHxvCCRwubnmIfZ6QZAv2FU78pLX
8I3bsbmRAUg4UP9hH6ABVq4KQKMknxu1xQxLhpR1ylGPdiowMNTrEG8cCx3w/w==
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
131
Download

universidade do vale do itajaí centro de ciências