Você está aqui: Página Inicial > Transformação Digital > Ferramentas > Acesso Único > Arquitetura de Serviço e Protocolos

Arquitetura de Serviço e Protocolos

OpenID Connect

O Openid Connect (OIDC) é um protocolo baseado no OAuth 2.0 que especifica autorização e autenticação. O objetivo principal é conectar com segurança os usuários de aplicações web. Ele define como implementar o gerenciamento de autorizações de acesso, gerenciamento de sessão, fornecimento de informações sobre usuário logado.

O OIDC permite executar o logon único dos usuários e apresenta o conceito de um id_token, que é um token de segurança que permite ao cliente verificar a identidade do usuário e obter informações básicas de perfil sobre o usuário. Ele também é interoperável pois segue o protocolo RestFull e usa o formato de saída de dados o JavaScript Object Notation (JSON), que pode ser considetrado um padrão para aplicações web.

Além disso, o OIDC suporta vários tipos de clientes, como aplicações que utilizam o browser, clientes javascript, aplicações mobile, entre outros.

 

OAUTH2

OAuth2 é um protocolo aberto para autorização que permite aos clientes obterem acesso a recursos protegidos do servidor em nome do proprietário do recurso. O proprietário pode ser um cliente ou usuário final. Também especifica como um usuário final pode autorizar o acesso de terceiros aos seus recursos do servidor sem precisar compartilhar suas credenciais.

Atualmente ele vem sendo usado por grandes empresas como Google, Facebook, Microsoft e Twitter. O protocolo fornece quatro estratégias para concessão de autorização: código de autorização, implícita, credenciais de senha do proprietário do recurso e credenciais do cliente. A estratégia usada no Acesso Único é o código de autorização, que utiliza um token.

 

Json Web Token

O Json Web Token (JWT) define como transmitir objetos JSON de forma segura entre aplicações. Tem a característica de ser um padrão aberto.

A manipulação do padrão possui uma assinatura a ser realizada com uma palavra secreta ou uma chave publica/privada. O JWT é composto por 3 elementos: Headers, Payload e Signature.

Headers

São objetos JSON definidos por 2 atributos. O tipo do token (tpk) que é o JWT e o algorítimo (alg) de encriptação utilizado, como HMAC SHA256 ou RSA.

Exemplo:

{
"alg": "HS256",
"typ": "JWT"
}

Payload

São todos ou parte dos atributos de uma entidade representada por objetos JSON.

Exemplo:

{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}

Signature

Para criar a assinatura temos assinar o header codificado, o payload codificado e informar o secret, uma palavra secreta definida na aplicação. A assinatura é criada para verificar se quem enviou a requisição é quem realmente diz ser.

HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)

O resultado dessa assinatura é um token como abaixo. O token é dividido em três partes separadas pelo ponto. As três partes equivalem ao hash do header, payload e a signature.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

Sempre que for necessário acessar recursos protegidos, o cliente deve enviar o token gerado (JWT) através do atributo Authorizer do header da requisição, com a flag Bearer, como abaixo:

Authorization:Bearer
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

 

Código Autorizador

A estratégia é autorizar clientes a acessarem informações dos usuários proprietários através de um código identificador (Cliente ID). O cliente deve ser cadastrado no painel de gestão da ferramenta de autenticação para obter um Cliente ID. O proprietário da informação, ao ser requisitado, deve habilitar esse cliente para ter acesso às suas informações.

Essa estratégia é muito utilizada no mercado pois é otimizada para as aplicações server-side, o qual o código fonte não é exposto e a confidencialidade do Cliente ID é mantida.

 

Autorização para Recursos protegidos

Na ferramenta de autenticação, os serviços utilizam informações pessoais relacionadas aos cidadãos, portanto existe a necessidade de vincular recurso informacional ao serviço no processo de habilitação.

Quando o cidadão se autentica e acessa algum recurso pela primeira vez, uma solicitação de autorização de uso de dados pessoais é feita. A autorização do uso de dados pessoais permite o funcionamento correto.