Protegendo o WMS contra acesso não autorizado?


21

Em um projeto, o cliente deseja que as imagens do WMS sejam protegidas contra acesso não autorizado.

Quais são as soluções comuns para perceber isso?

Eles são compatíveis com os padrões OGC?

Respostas:


17

A especificação do OGC exige apenas o uso de http. Se for http compatível, tudo bem.

Alguns métodos possíveis:

  • Autenticação básica HTTP (a senha enviada como texto sem formatação pode ter suporte limitado ao cliente)
  • Autenticação HTTP Digest (mais segura, pode ter suporte limitado ao cliente)
  • Filtre o endereço IP do cliente (fácil de implementar, mas não particularmente seguro).
  • URL secreto. Use um GUID para gerar um URL impossível de adivinhar. Supõe que os clientes manterão o URL secreto. Muito mais simples para o usuário usar do que a entrada de senha. Suporte ao cliente garantido.

11

Este post do OGC de 2005 diz:

Não há aspectos de segurança específicos que fazem parte das especificações da interface OGC WMS / WFS / WCS. Em vez disso, a segurança e a autenticação são melhor tratadas em outra camada na pilha de processamento.


4

Se a segurança através da obscuridade for suficiente para seus propósitos, você poderá configurar uma extensão falsa para a camada:

Basta usar coordenadas do outro lado da Terra. A camada ainda aparecerá na lista de camadas, as solicitações ainda serão possíveis, mas se um usuário simplesmente selecioná-la em um software GIS e escolher "aplicar zoom à camada", ele não verá nada e pode pensar que essa camada está simplesmente vazia ou não trabalhos. Um aplicativo que sabe a extensão correta da camada ainda deve poder acessá-lo.

Eu já vi essa solução aplicada em alguns sites WMS, mas provavelmente não está totalmente em conformidade com os padrões OGC, pois o servidor retorna uma extensão incorreta.


3

Você pode exigir que os usuários se conectem ao WMS sobre HTTP protegido por uma VPN. Ele coloca a camada de segurança no nível da rede IP, mas certamente adiciona complexidade.



2

Supondo que você tenha o seguinte:

  • O Mapserver está renderizando dados através de um banco de dados Postgis
  • Você tem um aplicativo separado que pode autenticar usuários e atualizar o referido banco de dados.
  • O WMS LAYER usa um índice de mosaico WFS, conforme documentado no Exemplo de WMS-T com o Índice de mosaicos PostGIS para imagens raster

Você pode criar uma api_keystabela com access_tokene expires_atcolunas. Em seguida, adicione um parâmetro querystring &api_key=my_unique_key. Seu Mapfile para o tileindex ( veja o exemplo ) seria configurado assim:

DATA "geom FROM (
  SELECT
   my_table.geom,
   my_table.gid,
  api_keys.access_token
  FROM my_table
  CROSS JOIN api_keys
  WHERE ST_Intersects(geom, !BOX!) and api_keys.expires_at > now()
) AS subquery USING UNIQUE gid USING SRID=4326"
FILTER "access_token = '%api_key%'
VALIDATION
  'api_key' '^[a-zA-Z0-9\_\-]{33}$'
  'default_api_key' ''
END

A idéia é que seu aplicativo separado, que autentica os usuários no banco de dados, atualize a api_keystabela, definindo access_tokenum hash md5 e mantenha a expires_atcoluna atualizada em algum momento no futuro.

Como alternativa, você pode proxy de tráfego para uma estrutura separada que lida com autenticação WMS / OWS e proxies de usuários autorizados para o Mapserver interno. Aqui está uma lista obtida de uma postagem para a lista de discussão mapserver-users , que é uma lista expandida / resumida do que os outros responderam a esta pergunta.

Se você decidir usar o Geoserver, dê uma olhada no módulo AuthKey .


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.