Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Próxima »

Todas configurações a seguir podem ser feitas no Windows e Linux.

1 - Descompactar dentro do diretório do Application Server o arquivo libsamlsp-windows.zip para Windows ou libsamlsp-linux.zip para Linux.

Conteúdo descompactado:

libsamlsp.dll (Windows) ou libsamlsp.so (Linux) -> Biblioteca dinâmica que contém todas as funcionalidades do SAML Service Provider.

sso -> Diretório de uso exclusivo da libsamlsp.

Estrutura do diretório sso:

sso
  |- etc ( Arquivos de configuração do SAML, certificados e chaves privadas )
  |- lib ( Libs necessárias para a execução da libsamlsp )
  |- share
    |- xml ( Arquivos schema para validar os XML's de configuração e os assertions )
  |- var
    |- cache ( Cópia local dos arquivos de configuração dos IDP's configurados )
    |- log ( Arquivos de log da libsamlsp, libsaml, libxmltooling, libxml-security, libxerces )

 

2 - Copiar o arquivo invoker-applet.jar para o diretório "PATH" que é configurado na sessão HTTP do arquivo de configuração do Application Server.

3 - Habilitar o servidor HTTP no Application Server, na sessão HTTP coloque "Enable=1" para habilitar o http.

4 - (Opcional) Dentro da sessão HTTP insira a linha "SAMLSessionName=Nome a sua escolha", este é o nome do cookie de sessão do Service Provider, se esta linha não for inserida, o Service Provider vai criar um cookie de sessão com um nome padrão.

5 - Configurando o Service Provider:

  5.1 - Alterar o entityID do ServiceProvider: setSAMLID.

  5.2 - Alterar o entityID do IdentityProvider: setSAMLID.

  5.3 - Configurar o Service Provider para recuperar automaticamente o arquivo de configuração do Identity Provider: setIDPConf.

  5.4 - Inserir e configurar o Service Provider para utilizar sua versão de certificado digital: setSPCert.


Exemplo ( Configurando o Service Provider para utilizar o Identity Provider da Shibboleth )

static function getCert()
  certificate := "-----BEGIN CERTIFICATE-----" + CRLF;
  + "MIIC7jCCAdagAwIBAgIJAId3b8yf3qBfMA0GCSqGSIb3DQEBBQUAMBgxFjAUBgNV" + CRLF;
  + "BAMTDXRlYy1sdmluaWNpdXMwHhcNMTIxMTIyMTk1MTEwWhcNMjIxMTIwMTk1MTEw" + CRLF;
  + "WjAYMRYwFAYDVQQDEw10ZWMtbHZpbmljaXVzMIIBIjANBgkqhkiG9w0BAQEFAAOC" + CRLF;
  + "AQ8AMIIBCgKCAQEAs+VCZmdnRg+YrN3rMl1IiNT0kpqCD6LrEU9Inw8rPSQ7uoJx" + CRLF;
  + "2wVfLSvzoMueHV7A2/GWEEQFRqJ8gyPvdO7ahJ60RzVKHAKiR/p5l2ONct7vXRVs" + CRLF;
  + "jn3ZHe0au4s1Zhx0nLaveHa3uFqbuKkvcfHz1jGmjxFF3Hgcz+wWp1qvKQWGSEzh" + CRLF;
  + "89ANkmVrMwyZVm+QiELSeSbF2dy+P5ymVUZ3/0sVrLW9IbCr/2SH3O0ID2PgNlPp" + CRLF;
  + "dyxFcwCqII58cbfRjkm2Hs71InRC8nRjeRdNlWmMYzYtnzuI5i7rA6Rn81I20LcT" + CRLF;
  + "duneyMEVqR0uwCbBrW8hE14CloO6xNtJczMMCwIDAQABozswOTAYBgNVHREEETAP" + CRLF;
  + "gg10ZWMtbHZpbmljaXVzMB0GA1UdDgQWBBRN+g35SDc5ugbtgbkDZ9hvLLcjezAN" + CRLF;
  + "BgkqhkiG9w0BAQUFAAOCAQEAQwdtDbpn0OQYCCUjZTLR9Bs6v3vZqlgWYfnfHoGw" + CRLF;
  + "AXHrOpjcWis85wdyEQjeE2+KcKB9mGgG2LphG9mBrfCf1BVPzENkQUnS6AqVhuJe" + CRLF;
  + "KE2mlavNONOygWmG4wQQJQBljSZyVaSL0Asdy2sDMa7v66n+qiqj+hY3JTKVYlbF" + CRLF;
  + "lJDl+POkh784T6C0OXO0XzOYpzCvyrj4lQXAZC5Vfiex30vJs6a9RuhwwSVy/BNL" + CRLF;
  + "BDDKnyLb+2KfysVecKdwEmymNNTK1pzK5VBslH6v8e7cI2bQ2aXDpb1tnKwtNxm+" + CRLF;
  + "COl5peOveKURXr1oFWXWYMbL/9/ziLkX92/60uZDfDAKCQ==" + CRLF;
  + "-----END CERTIFICATE-----"
return certificate


static function getPrivKey()
  privKey := "-----BEGIN RSA PRIVATE KEY-----" + CRLF;
  + "MIIEpAIBAAKCAQEAs+VCZmdnRg+YrN3rMl1IiNT0kpqCD6LrEU9Inw8rPSQ7uoJx" + CRLF;
  + "2wVfLSvzoMueHV7A2/GWEEQFRqJ8gyPvdO7ahJ60RzVKHAKiR/p5l2ONct7vXRVs" + CRLF;
  + "jn3ZHe0au4s1Zhx0nLaveHa3uFqbuKkvcfHz1jGmjxFF3Hgcz+wWp1qvKQWGSEzh" + CRLF;
  + "89ANkmVrMwyZVm+QiELSeSbF2dy+P5ymVUZ3/0sVrLW9IbCr/2SH3O0ID2PgNlPp" + CRLF;
  + "dyxFcwCqII58cbfRjkm2Hs71InRC8nRjeRdNlWmMYzYtnzuI5i7rA6Rn81I20LcT" + CRLF;
  + "duneyMEVqR0uwCbBrW8hE14CloO6xNtJczMMCwIDAQABAoIBAE++UbfJIHtrEHeY" + CRLF;
  + "i9iwhyW4mI2gFgVOZ7stlPiFJdqdhCiCCGxZLj583Csr93P3e7BDoAynylrsThtn" + CRLF;
  + "w47nDlB5dVqXYbmW5U7Y1itogtwnvJ1bkNp9KNBeOVpnNA2GkZ6iUJgqr/f1mk+6" + CRLF;
  + "F4EACuGo8rc6peg8CjGU6tnWlgytWv32o0bIXGxL9uvoe+khefiL0tGmflgegQdQ" + CRLF;
  + "oz6grtWiclM2xGADp4bl200Uh2Ky8/+B8ByAim5ClZcKdgzD8TVymYq0JprmEjvq" + CRLF;
  + "ESTc4VFqnFy2GzEjvCb5L7ohEj7bb6aT9ruGC6y/1TNnYZa6gY6kDhuFRNltIwPL" + CRLF;
  + "9e3cn6ECgYEA10e65gzY2fezJ86BZ+TT9hnG+kPpJOkdSrxq+xI5i6NRrNdnW0C4" + CRLF;
  + "zykkbcBGnqifIOes3Bz8FtSraMEuTSqIkh80NBHDA5JwFJcXgfpNOA5FUYm+P/yx" + CRLF;
  + "DOsayrNskUXJ5HPHWBVas3RbqNCt4Uf9VLlANc8cOFwbnaLYcOUGo/sCgYEA1ewj" + CRLF;
  + "ZiMVu9DVm0thstgJQE0kAJ/2ENS3ys5/CwMBPkGLWMxX7fCnSfhC/Zi3ic9vgHbT" + CRLF;
  + "0ihZoD5KOVSW2qUPUCEgCd53+iLj6Ph6zmHpdlyAHZBnP3G2vG0YYpYXSI6fXGHb" + CRLF;
  + "ZBNPUuyYGFphq53k9AGyFJKX2HZdQOASClYfqzECgYEAlfXth1rjo9IcBlqfYhPQ" + CRLF;
  + "YtpJ9QNhYMjSEsF1dDeZxl+aAWB7KuHG2ue57InHp7WmQ3GexCWcpPq3/Fy1OCOs" + CRLF;
  + "xrzdzHei9NYJJQ6q3WvSZn3qY4Yj9Ma9PlZ3b0PVGM0Yef78masmZ2NihhH3Tbqs" + CRLF;
  + "CVySEemXqtrekcxiISIoogkCgYEAqT/R5f4+NMGOLvaeDoyEDT67DE+CtGBIJYno" + CRLF;
  + "08KF2karRA8wRk3PXWOxRMjt9XeMJVxeTHimKHT/7onxbH2JNwFuQsCjteCi5vCo" + CRLF;
  + "4N5wgre+mSVlurlyNXQvBdjwBPTqOoIlvPDWIqqTzzi667fZrAAnb8Vno9hKAYkG" + CRLF;
  + "XO000xECgYACur0xK1nXv+95NcodafMLcoonkDbNHJNfCXWDyYOYqCdPj6kVkFtE" + CRLF;
  + "U52RZ2jfby/S4vOyGirn9c4xSI6jzwCL/P6xVoUbmNl9iCEUtPWdofnpBaicVdSf" + CRLF;
  + "fcPURtz8r4tZSVCQ/YljPvsdKCl1wVBAN0hyMZPeU4BZ1zIvXZpbQw==" + CRLF;
  + "-----END RSA PRIVATE KEY-----"
return privKey
 
static function setIdpShib()
  local error

  // http://tdn.totvs.com/display/tec/setSAMLID 
  if setSAMLID("http://myhostname:8080/spEntityID", 1, @error) == .F.
    return alert("setSAMLID: " + error)
  endif
 
  // http://tdn.totvs.com/display/tec/setSAMLID
  if setSAMLID("https://idp.testshib.org/idp/shibboleth", 2, @error) == .F.
    return alert("setSAMLID: " + error)
  endif
 
  // http://tdn.totvs.com/display/tec/setIDPConf
  if setIDPConf("http://testshib.org/metadata/testshib-providers.xml", "shibboleth.tst.xml", @error) == .F.
    return alert("setIDPConf: " + error)
  endif
 
  // http://tdn.totvs.com/display/tec/setSPCert
  if setSPCert("certfile.txt", getCert(), "keyfile.txt", getPrivKey(), @error) == .F.
    return alert("setSPCert: " + error)
  endif
return

 

6 - Configurando o Identity Provider para fornecer identidades para o Service Provider.

  OBS. O Service Provider tem um serviço que retorna um arquivo XML com sua configuração, esta configuração é extraída a partir do arquivo de configuração do Service Provider ( Item 5 ), portanto, este procedimento deve obrigatoriamente ser feito após finalizar a configuração do Service Provider.

  O Arquivo XML que contém a configuração do Service Provider pode ser utilizado para configurar o Identity Provider automaticamente, mais adiante, tem um exemplo de como fazer isso com o IDP da Shibboleth. 

  6.1 - A URL do serviço que retorna o arquivo XML de configuração é a mesma configurada como entityID do SP, só é necessário acrescentar o caminho "/saml2/metadata", utilizando o entityID do exemplo acima a URL ficaria assim: http://myhostname:8080/spEntityID/saml2/metadata.

  Acessando esta URL a partir do browser, o arquivo XML será baixado na máquina local,  o arquivo será salvo com o nome "metadata", é necessário renomear este arquivo para o nome do seu host incluindo a extensão ".xml", e.g. ( myhostname.xml ).

Exemplo ( Configurando o Identity Provider da Shibboleth a partir do XML de configuração do Service Provider )

1º Passo:

Baixar o arquivo XML de configuração do Service Provider ( http://myhostname:8080/spEntityID/saml2/metadata ).

2º Passo:

Acesse o site do IDP da Shibboleth e fazer o upload do XML de configuração do SP ( https://www.testshib.org/metadata.html )

Neste site temos dois passos simples:

Botão "Choose File", abri uma janela para selecionar o arquivo de configuração do SP ( Selecione o XML de configuração do SP baixado anteriormente ).
Botão "Upload File", faz o upload e faz a federação do IDP com o SP.

7 - Testando o Service Provider

A URL do serviço SAML é mesma configurada como entityID do SP, só é necessário acrescentar o caminho "/saml2/get".

Exemplo:

http://myhostname:8080/spEntityID/saml2/get

ou seja, 

entityID/saml2/get

Para testar o ambiente, inicie o Application Server e acesse a sua URL do serviço SAML a partir do browser.

Obs. Se tudo foi configurado corretamente, quando você executar o passo acima, você será redirecionado para a página de login do IDP, após o login, o IDP vai te redirecionar para página do SP e se o processo de validação da resposta SAML ( assertion ) foi concluído com sucesso, o SmartClient será aberto, caso contrário será apresentado um erro na página.

Veja também: saveIDPXML

  • Sem rótulos