Existe um proxy reverso para interfaces REST, que requer aprovação?

2

Minha organização emprega vários serviços que expõem interfaces REST. As solicitações POST, PUT ou DELETE para essa interface podem ser destrutivas. Usando firewalls e autenticação de usuário, podemos restringir as contas ao pessoal autorizado. Eu gostaria de dar um passo adiante e exigir a aprovação de duas pessoas antes que uma solicitação seja tratada pelo servidor de aplicativos.

Existe um proxy reverso que posso empregar entre o (s) usuário (s) e o servidor de aplicativos, de modo que qualquer solicitação GET seja encaminhada ao servidor de aplicativos imediatamente. No entanto, qualquer solicitação POST ou PUT é atrasada até ser aprovada em uma página da Web interativa. (As solicitações em questão geralmente contêm um corpo JSON e a URL e o verbo HTTP são bastante descritivos.)

Então, se Alice fizer

curl -XDELETE https://some.api/important/resource,

isso não terá efeito até que Bob abra um navegador da Web e o corrija explicitamente. Alice pode usar um script para realizar a operação, mas Bob precisa estar presente no navegador e verificar a solicitação.

    
por Jan 03.06.2015 / 09:22

2 respostas

2

Em primeiro lugar, isso soa muito como tentar usar a tecnologia para resolver um problema não tecnológico, do qual estou sempre cansado.

Dito isso, não consigo imaginar nenhum software pronto para usar / pronto para usar que faça isso, já que é um requisito um pouco estranho, se não um pouco válido.

O que você pode fazer, no entanto, é interceptar os pedidos com métodos de preocupação e enviá-los para um script que os salva em algum lugar (SQL, arquivo, Redis, etc.). Essas solicitações devem, provavelmente, retornar um objeto JSON genérico que declara que sua solicitação foi enfileirada para aprovação, para que os usuários não achem que falharam.

O (s) usuário (s) administrativo (s) então carrega (m) outra página que lista a fila de solicitações e aprova-as conforme necessário. As solicitações aprovadas podem ser reenviadas imediatamente pela sessão de Bob ou podem ser enviadas para um processo de trabalho que as realiza em segundo plano.

    
por 03.06.2015 / 16:51
0

Você pode fazer isso no Apache. Algo como (escrevendo da memória) deveria fazer isso:

<Location /api>
  AuthType Basic
  AuthName "API authentication"
  AuthUserFile /path/to/htusers
  AuthGroupFile  /path/to/htgroups

  Require valid-user

  # Write user group
  <Limit DELETE>
    Require group superusers
  </Limit>
</Location>

Isso permitirá que qualquer usuário em seu arquivo htusers rode GET, POST, PUT etc. No entanto, DELETE será limitado a qualquer pessoa do grupo "superusuários"

    
por 03.06.2015 / 10:10

Tags