Análise para integração do consumo das informações do Consignação no Portal do servidor (Sistema Consignação)
Data de elaboração | 21/08/2023 |
---|---|
Responsável pelo estudo |
|
Equipe do estudo |
|
Alvo | Portal do Servidor |
Origem |
Implementação: Análise para integração do consumo das informações do Consignação no Portal do servidor |
Objetivo |
Levantar as formas de integração para consumo das informações do consignação pelo portal do servidor |
Documentação correlata | |
Observações |
1. Objetivo
O Presente estudo objetiva levantar as formas de integração para consumo das informações do consignação pelo portal do servidor.
1.1 JUSTIFICATIVA
O portal do servidor foi criado para facilitar o acesso a várias informações por meio de integrações com diferentes sistemas. Um exemplo disso é o sistema de consignação, que contém informações importantes para o servidor. Para garantir que essas informações sejam exibidas de forma segura, a integração entre o sistema consignação e o portal do servidor deve ser configurada para acessá-las de maneira confiável.
1.2 RESULTADOS ESPERADOS
Espera-se que após a conclusão desse estudo seja possível mostrar como será possível a forma que o portal do servidor acessará as informações do sistema consignação.
2. Introdução
Em um esforço contínuo para melhorar a eficiência e a experiência do usuário, a integração entre tecnologias diferentes desempenha um papel fundamental. No caso em questão, a sinergia entre um portal do servidor construído em .NET e uma API Java Spring Boot oferece uma solução robusta para acessar informações cruciais sobre empréstimos consignados.
Benefícios da Integração:
- Acesso a Dados Atualizados: O portal do servidor pode solicitar informações atualizadas diretamente da API, garantindo que os detalhes de empréstimos consignados estejam sempre precisos.
-
Segurança Reforçada: A integração é projetada para manter altos padrões de segurança. As políticas de autenticação e autorização garantem que apenas usuários autorizados tenham acesso aos dados sensíveis.
-
Aprimoramento da Experiência do Usuário: A integração transparente permite que os usuários acessem informações de empréstimos consignados sem a necessidade de alternar entre diferentes sistemas.
3. Desenvolvimento
3.1 CENÁRIO ATUAL
Em um cenário digital cada vez mais interconectado, a segurança da informação tornou-se um aspecto crítico para qualquer aplicação. Uma das maneiras fundamentais de proteger recursos e dados é por meio de autenticação robusta em APIs. O Java Spring Boot, um framework de desenvolvimento rápido para aplicações Java, oferece ferramentas poderosas para implementar diversos métodos de autenticação, proporcionando um ambiente seguro para acesso aos endpoints.
O Portal do Servidor .NET:
O portal do servidor, construído na plataforma .NET, proporciona aos funcionários e colaboradores um acesso centralizado a uma variedade de serviços e informações. Com uma interface intuitiva e recursos personalizados, o portal torna a navegação e a interação mais convenientes, otimizando os processos internos.
A API Java Spring Boot:
Do outro lado, a API Java Spring Boot facilita o acesso seguro e eficiente às informações de empréstimos consignados do servidor. Baseada na robusta estrutura do Spring Boot, a API oferece a capacidade de expor dados relevantes por meio de endpoints bem definidos. Isso permite que o portal do servidor recupere os detalhes dos empréstimos consignados de maneira rápida e confiável.
3.2 SOLUÇÃO PROPOSTA
Primeiramente, foi realizado um estudo de como funciona a autenticação no Java Spring Boot. Após isso, foi utilizada a ferramenta do Postman para se verificar a geração do token e o funcionamento da API obtendo-se os dados através das rotas. Posteriormente, foi criada uma funcionalidade no Portal do Servidor, de maneira local, para testar a autenticação e obtenção dos dados. Essa funcionalidade está descrita abaixo como referência para possíveis novas integrações com outros sistemas .NET.
Credenciais
Foi verificado que para se autenticar à API Java SpringBoot, devem ser enviadas as app credentials e as user credentials. Assim será gerado um token JWT (Json Web Token).
App Credentials: _clientId e _clientSecret;
User Credentials: _loginConsignacao e _senhaConsignacao
Para os métodos abaixo, foram utilizadas as seguintes variáveis de ambiente:
UrlConsignacaoApi=https://consignacao.development.local
ConsignacaoAuthUserName={Incluir o clientId aqui}
ConsignacaoAuthPassword={Incluir o secret aqui}
ConsignacaoUserName={Incluir o usuário do sistema aqui}
ConsignacaoPassword={Incluir a senha do usuário do sistema aqui}
1) Método construtor da classe
public ApiConsignacao(IConfiguration configuration)
{
UriConsignacaoApi = configuration["UrlConsignacaoApi"];
_loginConsignacao = configuration["ConsignacaoUserName"];
_senhaConsignacao = configuration["ConsignacaoPassword"];
_authorizationUserName = configuration["ConsignacaoAuthUserName"];
_authorizationPassword = configuration["ConsignacaoAuthPassword"];
headers = Headers();
}
2) Método Autenticar
private AutenticacaoDto Autenticar()
{
string username = _clientId;
string password = _clientSecret;
string credentials = $"{username}:{password}";
byte[] credentialsBytes = Encoding.UTF8.GetBytes(credentials);
string base64Credentials = Convert.ToBase64String(credentialsBytes);
var credenciaisParaAutenticacaoDaAplicacao = new Dictionary<string, string>
{
{ "Authorization", $"basic {base64Credentials}" },
};
var credenciaisParaAutenticacaoDoUsuario = new Dictionary<string, string>
{
{ "username", _loginConsignacao },
{ "password", _senhaConsignacao },
{ "grant_type", "password" }
};
var auth = ConsumirApi.ObterToken<AutenticacaoDto>(UriConsignacaoApi, "/oauth/token", Method.POST, credenciaisParaAutenticacaoDoUsuario, credenciaisParaAutenticacaoDaAplicacao);
return auth;
}
3) Geração do Token de acesso
public static AutenticacaoDto ObterToken<T>(string uri, string rota, Method metodo, Dictionary<string, string> parameters = null, Dictionary<string, string> headers = null)
{
if (!uri.EndsWith("/"))
uri += "/";
if (rota.StartsWith("/"))
rota.Remove(0, 1);
try
{
RestClient client = new RestClient(uri);
var request = new RestRequest(rota, metodo)
{
RequestFormat = DataFormat.Json
};
if (parameters != null)
{
foreach (var param in parameters)
{
request.AddParameter(param.Key, param.Value);
}
}
if (headers != null)
{
foreach (var header in headers)
{
request.AddHeader(header.Key, header.Value);
}
}
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
var response = client.Execute(request);
var auth = JsonSerializer.Deserialize<AutenticacaoDto>(response.Content);
return auth;
}
catch (Exception e)
{
throw e;
}
}
Obs: Incluir o código da linha 32, para definir que os dados estão sendo passados pelo formato "application/x-www-form-urlencoded".
Com o token, basta incluir no headers e passar para o método ConsumirApi, conforme abaixo:
private Dictionary<string, string> Headers()
{
var auth = Autenticar();
return new Dictionary<string, string>
{
{ "Authorization", $"{auth.token_type} {auth.access_token}" },
};
}
public async Task<FuncionarioConsignacaoDto> ObterPorId(int id)
{
var funcionario = ConsumirApi.Consumir<FuncionarioConsignacaoDto>(UriConsignacaoApi, $"/funcionario/{id}", Method.GET, null, headers);
return funcionario;
}
No caso acima, a variável headers foi atribuída no método construtor da classe.
4. Conclusão
Após uma análise da API do consignação, foi possível descrever o funcionamento e o código para se obter os dados do sistema consignação.
Nenhum comentário