Tempo aproximado para leitura: 00:15:00 min
Dúvida
Como configuraro Single Sign-On por meio de chaves PGP no GoodData?
Ambiente
GoodData – Fast Analytics – Todas as versões.
Solução
Para configurar o Sigle Sign-On no GoodData por meio de chaves PGP, é necessário seguir alguns passos, que juntos irão realizar a autenticação do GoodData com suas chaves PGP criadas localmente. Ao final dessa documentação, haverá um resumo dos passos que devem ser automatizados para que a autenticação PGP funcione de forma automática no portal do cliente que está implementando a função.
1. Baixe e instale o programa GPG, a depender do seu sistema operacional. Mais detalhes e links de download podem ser obtidos no link: https://help.gooddata.com/doc/enterprise/en/expand-your-gooddata-platform/gooddata-integration-into-your-application/set-up-user-authentication-and-sso/gooddata-pgp-single-sign-on/how-to-generate-a-public-private-key-pair
2. Crie uma chave PGP seguindo os passos da documentação acima. Aconselha-se realizar todos os procedimentos apontando para a mesma pasta, assim fazendo o processo de forma mais facilitada do começo ao fim. Resumidamente, os comandos para criação são estes:
gpg --full-generate-key
Observações: Após executar este comando, diversas informações serão solicitadas, como tipo de chave, tamanho da chave, tempo de expiração da chave, nome completo, e-mail, comentário e senha da chave. Após o preenchimento, as suas chaves pública e privada serão criadas.
Recomendamos a configuração abaixo:
Tipo de chave: RSA and RSA
Tamanho da chave: 1024
Tempo de expiração da chave: 0 (não expira)
Nome completo: Seu nome
Comentário (opcional): Seu comentário
Senha da chave: Senha da chave (será usada posteriormente)
gpg --export -a "email@address.com" > public.key
Observações: Alterar "email@address.com" para o email utilizado para criar a chave. Um arquivo chamado "public.key" será criado na pasta onde está realizando as operações, que conterá sua chave pública.
3. Baixe a chave PGP pública da GoodData utilizando o link do passo 1 e coloque-a no mesmo diretório que está trabalhando. Após isso, execute o comando abaixo:
gpg --import gooddata-sso.pub
Observações: Este comando irá importar a chave pública da GoodData para a sua keystore local, ela será utilizada para assinar a autenticação em passos futuros.
4. Abra um chamado para a TOTVS, direcionado para a equipe de GoodData, com o modelo abaixo e o arquivo "public.key" criado no passo 2 em anexo. Os agrupadores da central de atendimento são "Brasil" > "Cross Segmentos" > "Analytics By GoodData" ou "Totvs Fast Analytics".
"
Prezados, bom dia!
Peço a gentileza de configurarem o SSO Provider do GoodData de acordo com as informações abaixo e chave pública enviada em anexo.
- Nome do SSO Provider: meusso.sso.com.br
Obs.: Caso seja Fluig Identitu, utilizar o domínio atual:
Nome do SSO Provider: minhaempresa.fluigidentity.com
- Usuários que utilizarão o SSO: MEUSUSUÁRIOS
Obrigado!
"
Observações: Ao preencher o modelo acima com o nome do SSO desejado, substituindo "meusso".sso.com.br pelo nome escolhido, é recomendável optar por um nome facilmente associável, como o nome da sua organização. No caso do uso do Identity, é crucial utilizar o domínio atualmente utilizado, substituindo "minhaempresa".fluigidentity.com. O nome deverá ser único, dessa forma, está sujeito a aprovação da equipe de suporte, pois pode haver um nome já em utilização. Preencha no modelo acima os e-mails dos usuários cadastrados na plataforma GoodData que irão utilizar o SSO. O e-mail pode ser de um usuário único que irá sempre ser utilizado ou diversos usuários, no caso, também é possível enviar o ID do projeto e o analista de suporte irá associar TODOS os usuários do projeto enviado ao SSO. Os usuários continuarão conseguindo realizar login normalmente, sem efeitos ao usuário final, apenas será liberada a opção de logar via SSO e feita a associação do usuário ao SSO criado.
{
"email": "email@address.com",
"validity": unixtimestamp
}
Observações: O e-mail deverá ser um dos e-mails de usuários vinculados no SSO no passo 4. O campo validity deverá ser obrigatóriamente preenchido com valor de uma timestamp em formato UNIX e em formato inteiro, com valor de 10 minutos no futuro ou até 36 horas no futuro. Segue alguns modelos para criação de timestamps nesse formato, que retornam valores de 24 horas no futuro:
Postgres: SELECT CAST(extract(epoch from GETDATE() + 1) AS INTEGER)
Microsoft SQL Server: SELECT DATEDIFF(SECOND, CONVERT(DATETIME, '1970-01-01', 121), GETDATE() + 1)
Javascript: console.log(Math.floor(newDate(Date.now()+86400000).getTime() /1000))
6. Salve o arquivo "json.txt" com o e-mail correto e o campo validity preenchido. Na pasta que contém todos os arquivos desse passo-a-passo (inclusive o arquivo "json.txt") e execute o comando abaixo:
gpg --armor -u pgpOwner.user@domain.com --output signed.txt --sign json.txt
Observações: Esse comando irá assinar o arquivo "json.txt" com a sua chave privada, criando o arquivo "signed.txt". O e-mail "pgpOwner.user@domain.com" deverá ser alterado pelo e-mail utilizado no passo 2 para criar a chave PGP. Caso tenha seguido todos os passos conforme instruído, não será necessário alterar mais nenhuma instrução.
gpg --armor --output enc.txt --encrypt --recipient security@gooddata.com signed.txt
Observações: Esse comando irá encriptar o arquivo "signed.txt" com a chave pública da GoodData, criando o arquivo "enc.txt", que conterá a mensagem PGP necessária para realizar o login de forma automática. Caso tenha seguido todos os passos conforme instruído, não será necessário alterar mais nenhuma instrução.
7. Após a TOTVS retornar com o nome do SSO criado e os usuários associados ao mesmo, utilize o código disponibilizado na documentação a seguir. O código consiste em uma página HTML que irá fazer o SSO de forma manual. Link: https://help.gooddata.com/doc/enterprise/en/expand-your-gooddata-platform/gooddata-integration-into-your-application/set-up-user-authentication-and-sso/gooddata-pgp-single-sign-on#GoodDataPGPSingleSignOn-ExampleUseCase:EmbeddingGoodData
8. Insira o código em um editor de texto e altere a linha 12 com o domínio utilizado no GoodData. Nesse caso exemplificaremos com o domínio "analytics.totvs.com.br":
Antes:
Depois:
let targetUrl = link do dashboard que deseja abrir ao abrir a página html.
let ssoProvider = SSO provider enviado pelo suporte TOTVS.
let pgpMessage = Mensagem PGP dentro do arquivo enc.txt criado no passo 6.
Exemplo Antes:
Exemplo com a mensagem PGP sendo exibida por completo:
Observações: A mensagem PGP pode estar em uma única linha, porém não deve conter ENTER (caractere especial de escape) em seu conteúdo. Todos os ENTERs devem ser substituídos por "\n".
10. Salve o arquivo HTML e abra-o em um navegador.
Parabéns! Agora você tem um arquivo HTML que faz autenticação SSO por meio de chaves PGP. Se você seguiu as instruções desse documento, a autenticação irá durar por 24 horas, sendo necessário após isso recriar o arquivo "json.txt" com o campo validity com uma nova timestamp e repetir os passos 6 e 9, assim criando uma nova mensagem PGP e atualizando seu arquivo HTML.
Observações:
Para automatizar esse processo, seu app, site ou intranet deverá automáticamente gerar o arquivo "json.txt" com a estrutura mencionada no passo 5, assinar e criptografar o arquivo conforme descrito no passo 6 e automáticamente renovar o valor da variável pgpMessage do HTML gerado em seu app.
0 Comentários