Integração com o Sign Service
Visão geral
Neste tutorial, você aprenderá a integrar o Sign Service, uma solução de assinatura digital do lado do servidor que centraliza o gerenciamento de certificados e aplica controle de acesso por meio de autenticação baseada em tokens.
Este tutorial é destinado a desenvolvedores e administradores de TI. Para segui-lo, é útil ter conhecimentos básicos de API HTTP, autenticação com tokens bearer e certificados digitais.
Contexto
Esta integração permite que sua aplicação use os certificados digitais centralizados do Redtrust para assinar documentos com segurança por meio do Sign Service.
O Sign Service do Redtrust gerencia todo o fluxo de assinatura, incluindo autenticação do usuário, emissão de tokens, gerenciamento de certificados e execução de assinaturas, por meio de uma API centralizada e segura.
O fluxo de integração consiste em duas fases principais:
-
Autenticação e obtenção de token: O usuário se autentica no Redtrust, que emite um JWT (JSON Web Token) para autorizar o acesso ao serviço de assinatura.
-
Assinatura de documentos usando certificados do Redtrust: Uma vez autenticada, sua aplicação pode realizar operações de assinatura usando os certificados digitais gerenciados pelo Redtrust.
Antes de começar
Para integrar o serviço, você precisará das seguintes informações fornecidas pelo cliente do Redtrust:
-
Endereço IP ou nome do host do servidor Redtrust.
-
A porta usada para acessar o Sign Service (o valor padrão é
8083). -
Nome do usuário de aplicação para o serviço.
-
(Opcional) Nome de domínio.
Você também precisará das seguintes informações fornecidas pelo operador da aplicação cliente:
- URL de redirecionamento para onde as credenciais temporárias serão enviadas. Esse endereço deve estar registrado no Redtrust para autorizar o destino do redirecionamento e é necessário para obter o token final (JWT).
Etapa 1: Configuração geral
-
Acesse a URL do serviço e faça login:
https://SEU_IP_REDTRUST:PORTA/authclient/auth/loginrequest?Consumer=SIGN_SERVICE&Domain=SEU_DOMÍNIO&RedirectUrl=URL_REDIRECIONAMENTO×tamp=TIMESTAMP&partner=NOME_PARCEIRO&hmac=ASSINATURA_HMACPor exemplo:
https://localhost:8083/authclient/auth/loginrequest?Consumer=SIGN_SERVICE&Domain=local.users&RedirectUrl=https%3A%2F%2Fgoogle.es%3Ftkn%3D×tamp=1744719496&partner=CA_DEMO&hmac=c360b2d221a55da777a5ba75264d8800ce6ebe89f41aa8b6da7e1a78bb601055
Para ver a lista de parâmetros suportados, consulte Parâmetros suportados.
Cabeçalhos obrigatórios
Para garantir a legitimidade de cada requisição, inclua os seguintes cabeçalhos HTTP:
| Cabeçalho | Descrição |
|---|---|
x-partner-name | Nome da aplicação cliente em maiúsculas. Usado para identificar e autorizar o parceiro que realiza a chamada. |
x-request-timestamp | Timestamp UNIX que indica quando a requisição é feita. Ajuda a prevenir ataques de repetição. Consulte Unix TimeStamp - Epoch Converter. |
x-hmac-signature | Assinatura criptográfica que valida a requisição. É gerada assinando a mensagem NOME_PARCEIRO:TIMESTAMP_UNIX usando HMAC-SHA256 com uma chave compartilhada. |
O cabeçalho x-hmac-signature permite que o servidor verifique a autenticidade e integridade da requisição usando a chave secreta compartilhada. Toda requisição sem assinatura, malformada ou inválida será rejeitada.
Recursos para implementação
Gerador de assinatura HMAC-SHA256 - Akto
Retorno da credencial temporária
Se a autenticação for concluída com sucesso, o servidor redireciona automaticamente o usuário para a URL especificada na requisição inicial.
Esse redirecionamento incluirá uma credencial temporária na string de consulta. Por exemplo:
https://apptest.com?tkn=WP0WSA2D4415ABZ270HW3F62F1152C48ORT0F929I6VISR780Y583FD10138FG4S
Sua aplicação deve capturar o parâmetro tkn da URL de redirecionamento. Essa credencial temporária deve ser trocada por um token de acesso permanente e um token de atualização, chamando um endpoint específico (consulte a etapa 2, Processo de login).
O token de acesso é necessário para assinar documentos e realizar outras operações autorizadas. O token de atualização permite renovar a sessão sem precisar se autenticar novamente.
Etapa 2: Processo de login
O processo começa chamando a seguinte URL:
https://SEU_IP_REDTRUST:PORTA/authclient/auth/loginrequest?Consumer=SIGN_SERVICE&Domain=SEU_DOMÍNIO&RedirectUrl=URL_REDIRECIONAMENTO×tamp=TIMESTAMP&partner=NOME_PARCEIRO&hmac=ASSINATURA_HMAC
Dependendo dos parâmetros e da configuração do usuário, há três cenários possíveis:
-
Sem domínio especificado
Se nenhum domínio for fornecido (ou se não for do tipo OAuth ou SAML), o formulário de autenticação do Redtrust será exibido. O usuário deve fazer login com as credenciais configuradas (nome de usuário e senha, autenticação multifator, etc.).
-
Domínio externo especificado (OAuth ou SAML)
Se um domínio registrado como Provedor de Identidade externo (IdP) usando OAuth ou SAML for especificado, o Redtrust redirecionará o usuário diretamente para a página de login do IdP.
Esse fluxo ignora a interface de login do Redtrust. Se existir federação entre a aplicação cliente e o Redtrust, o Single Sign-On (SSO) também é suportado, evitando que o usuário precise se autenticar novamente.
-
Sem domínio especificado, mas o usuário pertence a um IdP externo
Variante do cenário 1. O usuário insere seu nome de usuário do Redtrust e, se pertencer a um IdP externo, é redirecionado automaticamente para o provedor correspondente.
Em todos os casos, o processo termina redirecionando o usuário para a URL de redirecionamento especificada, que inclui a credencial temporária (tkn) a ser trocada por um token de acesso definitivo.
Para concluir a troca do token, chame os seguintes endpoints:
Endpoint: /authapi/v1/login_by_temp_token
Método: GET
Autenticação: Authorization: Bearer <accessToken>
Body:
{
"temporalToken": "string"
}
Resposta
{
"message": "string",
"messageType": "SUCCESS",
"errorCode": "ERROR_CODE",
"data": {
"refreshToken": "string",
"accessToken": "string",
"expiration": "<dateTime>"
}
}
Endpoint: /authapi/v1/refresh-token
Método: PUT
Autenticação: Authorization: Bearer <accessToken>
Body:
{
"refreshToken": "string"
}
Content-Type: application/json
Resposta
{
"message": "string",
"messageType": "SUCCESS",
"errorCode": "ERROR_CODE",
"data": {
"refreshToken": "string",
"accessToken": "string",
"expiration": "<dateTime>"
}
}
Endpoint: /authapi/v1/logout
Método: DELETE
Autenticação: Authorization: Bearer <accessToken>
Body: Nenhum
Content-Type: application/json
Resposta
{
"message": "string",
"messageType": "SUCCESS",
"errorCode": "ERROR_CODE",
"data": {}
}
Recursos adicionais
Os seguintes recursos estão disponíveis para ajudá-lo a testar a integração e gerar os cabeçalhos necessários:
-
Coleção Postman Fazer download Inclui requisições pré-configuradas para testar a autenticação com o Redtrust.
-
Script auxiliar para Postman Fazer download Gera automaticamente o cabeçalho
x-hmac-signatureno Postman com o formato e o segredo corretos.
Certifique-se de importar a coleção no Postman e configurar as variáveis necessárias (timestamp, nome do parceiro, chave compartilhada) antes de enviar requisições.
Etapa 3: Processo de assinatura
As requisições de assinatura são feitas para a seguinte URL base:
https://SEU_IP_REDTRUST:PORTA/signapi
Por exemplo https://localhost:8083/signapi/v1/sign/document ou https://localhost:8083/signapi/v1/certificate/list.
Para concluir o processo de assinatura, use os endpoints descritos na referência da Sign API.
Recursos adicionais
- Coleção Postman Fazer download
Parâmetros suportados
| Parâmetro | Descrição |
|---|---|
Consumer (obrigatório) | Deve ser sempre definido como SIGN_SERVICE para este serviço. |
RedirectUrl (obrigatório) | URL para a qual o usuário será redirecionado ao final do processo. Uma credencial temporária é adicionada. Certifique-se de aplicar UrlEncode. |
Domain (opcional) | Domínio dos usuários que usarão a API. Permite adaptar o fluxo com base no tipo de usuário. |
timestamp (obrigatório) | Timestamp no formato UNIX (segundos desde o epoch). |
partner (obrigatório) | Nome em maiúsculas da aplicação cliente que faz a requisição. |
hmac (obrigatório) | Assinatura HMAC para segurança. Consulte a seção sobre o cabeçalho x-hmac-signature para mais informações. |
Esta página foi útil?