Lições sobre autorização que o Open Banking ensina para qualquer arquitetura

Projetar sistemas seguros é uma tarefa difícil para nós, arquitetos. Cada decisão arquitetural pode gerar brechas no sistema, que irão afetar atributos de qualidade, segurança e confidencialidade. Uma decisão arquitetural que praticamente todo projeto de software passa, é a utilização de componentes de autenticação e autorização. Sistemas que implementam as especificações oAuth2 e OpenId são escolhas “seguras”. Com a chegada do Open Banking, temos especificações de protocolos que adicionam camadas extras de segurança para os sistemas.

Umas das bases do Open Banking é aumentar a segurança na solicitação de autorizações para comunicação entre dois sistemas. O objetivo é mitigar brechas que os fluxos de autorização trazem, como vazamento de credenciais, ataques de replay e mix-up.

Neste artigo, vamos apresentar algumas especificações do Open Banking, que incrementam o nível de segurança na comunicação entre sistemas, e que podem ser empregadas em qualquer solução que demande um incremento de segurança.

Autorização entre sistemas via mTLS

Ao utilizar o fluxo client credentials, as credenciais para solicitar autorização podem ser mantidas dentro do aplicativo. Isso é uma brecha de segurança porque qualquer credencial compilada e distribuída com o aplicativo, não é realmente secreta. A credencial pode ser extraída do aplicativo com relativa facilidade. Uma pessoa mal intencionada, de posse destas credenciais, pode iniciar um roubo de dados do sistema.

Para mitigar essa falha de segurança, o uso de Mutual TLS (mTLS) é uma ótima recomendação. Credenciais de acesso não são mais enviadas na requisição. As credenciais de acesso são substituídas por um certificado SSL reconhecido pelo servidor. Então, cada cliente que necessita requisitar autorizações para um servidor, deve enviar a cadeia de certificados reconhecida pelo servidor para receber a autorização. Contudo, no modelo mTLS o cliente também deve reconhecer a autoridade do certificado do servidor. Assim, ambos os lados da requisição garantem sua identidade e nenhum secret é transmitido. Mas é importante ressaltar que em ambos os fluxos, client credentials e Mutual TLS, devemos utilizar um cofre para armazenar a secret ou o certificado.

Registro de clientes dinâmicos (DCR)

É normal que aplicações mobile requisitem dados para serviços HTTP (APIs). Para garantir essa comunicação é necessário que os serviços HTTP “confiem” em quem está fazendo a requisição, no caso, o aplicativo mobile. Uma forma é utilizar o fluxo client credentials como forma de alcançar essa “confiança” e solicitar autorizações. Contudo, manter essa secret dentro do aplicativo é um risco de segurança, além de que todas as solicitações de autorização serão emitidas para um único cliente cadastrado no provedor de identidade.

Utilizar o registro de clientes dinâmicos (DCR) permite que cada cliente mobile solicite o registro dentro do provedor de identidade. Essa solicitação de registro é feita com o auxílio do fluxo mTLS para garantir que a requisição de registro é “confiável”. Uma vez que o registro deste cliente é realizado, temos um novo client ID para solicitar tokens de acesso. Com isso, toda requisição de token passa a ser rastreável a um cliente específico.

Requisições de autorização seguras (JAR E JARM)

Para que um cliente público, como um site SPA, precise fazer uma requisição para recursos protegidos como uma API HTTP, este cliente precisa solicitar uma autorização com um servidor de identidade. Neste cenário é recomendado que seja utilizado o fluxo de autorização authorization code com PKCE. O problema é que a resposta deste fluxo é enviada aberta, possibilitando que um atacante possa ler ou manipular esta resposta.

Este novo modo de resposta, JARM (JWT Secured Authorization Response Mode) entrega uma resposta de autorização empacotando os parâmetros dentro de um JWT assinado e opcionalmente criptografado pelo provedor de identidade. Assim um atacante (man in the middle) não consegue alterar facilmente os parâmetros da resposta. JARM também previne ataques mix-up pois dentro do JWT de resposta temos os parâmetros de issuer, utilizado pelo cliente para garantir que a resposta veio do servidor de autorização correto.

O grupo de trabalho FAPI, tem trabalhado para desenvolver uma especificação oAuth com alto grau de segurança para sistemas financeiros (Open Banking). Contudo, algumas das especificações criadas podem ser utilizadas para incrementar a segurança e confidencialidade de qualquer arquitetura. Então, mesmo que seu sistema não seja da área financeira, estudar a especificação Open Banking pode trazer incrementos na sua arquitetura.

Como a EximiaCo pode lhe ajudar

Conheça a nossa consultoria e assessoria em Arquitetura de Software que atua na modernização de aplicações de forma segura e escalável, promovendo a evolução de seus sistemas com menor custo e risco. Se sua empresa quer promover a autonomia de seu time no desenvolvimento de aplicações seguindo as melhores práticas de segurança, conheça a capacitação in company Desenvolvimento de Software Seguro, que aborda as vulnerabilidades de segurança em aplicações para seu negócio crescer com mais segurança e confiança.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Gabriel Kohlrausch
Arquiteto de software com experiência executiva e especialista no desenvolvimento de aplicações corporativas complexas.

INSIGHTS EXIMIACO

Arquitetura de Software

Evolução e modernização de aplicações para suportar mudanças de escala.

Manual do Arquiteto de Software

Discutindo conceitos, técnicas, tecnologias, padrões e procedimentos para a boa prática de arquitetura de software.
Tech Trusted Advisor, Fundador e CEO da EximiaCo

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Software

Consciência Situacional: O Sucesso do Software em Constante Evolução

Arquiteto de Software com experiência executiva em Tecnologia
Arquitetura de Software

Automação de Processos de Negócio: A Chave para Operações Eficientes e Lucrativas

Arquiteto de software e solução com larga experiência corporativa
Arquitetura de Software

A Evolução da Arquitetura de Software para Produtos Digitais Escaláveis

Arquiteto de Software com experiência executiva em Tecnologia
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Lições sobre autorização que o Open Banking ensina para qualquer arquitetura

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Lições sobre autorização que o Open Banking ensina para qualquer arquitetura

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?