Provider¶
O Autoriza pode atuar como um provedor de funções para autorização de acesso no lado cliente.
O controle da autorização fica de fato com o Autoriza, a aplicação parceira apenas demanda a aplicação das políticas de acesso, que é realizada no próprio contêiner de execução da aplicação.
Os providers são bibliotecas a serem empacotadas com a aplicação parceira. Eles oferecem uma interface programática para verificação do controle de acesso, com a disponibilização de funções (métodos) para recuperação dos dados de um usuário e aplicação das políticas de acesso durante o tratamento de requisições por uma aplicação. Um sistema, ao se integrar ao Autoriza, deve acionar essas funções, parametrizando-as com os dados do usuário e do sistema, para que o controle de acesso seja realizado.
Nesse cenário, o sistema utilizará a biblioteca provider específica para a linguagem e tecnologia da aplicação parceira, conforme demonstrado no exemplo de uso do provider java.
Os providers disponibilizam de forma programática métodos equivalentes aos serviços oferecidos pela API de validação. Eles fazem a aplicação das políticas de acesso, de modo equivalente à API. Mas, diferente da API, nesse caso a execução é feita no contêiner da aplicação cliente.
Conforme falado no início, o sistema precisa resolver a autenticação do usuário antes de acionar o Autoriza. Ou seja, se o usuário ainda não fez o login, ele precisa fazer.
O fluxo de troca de mensagens de controle de acesso para um usuário ainda não logado na aplicação está representado no diagrama a seguir.
Caso o usuário já esteja logado na aplicação, ela já pode acionar diretamente as funções do provider Autoriza.
O fluxo de troca de mensagens de controle de acesso para um usuário já logado na aplicação está representado no diagrama a seguir.
Auditoria
Ao adotar esse modelo, a aplicação parceira fica responsável por implementar a auditoria dos acessos realizados por um usuário.
Criando um logger "AUTORIZA" no contêiner da aplicação, é possível habilitar o nível "DEBUG" e rastrear as avaliações de acesso feitas pelo Autoriza. Não recomendamos que esses dados sejam usados como auditoria. Pensamos neles como facilitadores para análises de problemas de acesso de um usuário.
Providers disponíveis¶
Linguagem | Versão | Respositório onde está disponível | Tecnologias específicas |
---|---|---|---|
Java | 8 | https://nexus.aic.serpro.gov.br/#browse/browse:autoriza-nexus | Java puro Servlet filter Anotações com AspectJ Anotações com JavaEE |
O que é preciso cadastrar no Autoriza?¶
Para possibilitar essa integração, é preciso que seja realizado, para o sistema, o cadastro das seguintes entidades no Autoriza:
- Sistema
- Perfis
- Políticas de acesso
- Transações (opcional)
- Atribuições de perfis a usuários
- Features e características do usuário (opcional)
Benefícios¶
Possibilita ao gestor a administração centralizada da criação de perfis e transações, atribuição desses aos usuários, e definição das políticas de acesso
Possibilita ao gestor o rastreamento das mudanças realizadas nos cadastros de perfis, transações, políticas de acesso e atribuições, através da auditoria
Possibilita ao gestor um completa governança da autorização. Mudanças nas políticas de acesso da aplicação não precisam de um novo release
Delega para o Autoriza a manutenção, evolução e suporte dos cadastros relacionados à autorização, bem como da lógica necessária para aplicação das políticas de acesso, possibilitando à aplicação parceira um maior foco nas demandas diretamente relacionadas aos seus fluxos de negócio
Limitações¶
Modelo de integração mais invasivo, uma vez que é preciso empacotar uma biblioteca do Autoriza com o backend da sua aplicação
A engine de aplicação de políticas é executada do lado cliente, consumindo os recursos de infra da aplicação
Depende da disponibilidade da biblioteca específica para a linguagem e tecnologia empregadas no sistema
Cenários indicados para uso¶
O uso desse modelo de integração é o mais indicado para a maioria dos cenários. Só não seria recomendado, a princípio, por alguma limitação de oferta ou incompatibilidade tecnológica de uso da biblioteca no contêiner da aplicação (incompatibilidade das versões de java, por exemplo).
Uso do provider¶
O uso do provider java, que necessita de configurações no ambiente de execução, será tratado em seção específica.