카테고리 보관물: Gis

Gis

GeoServer 레이어를 인증 뒤에 두는 방법? 사용자가 서로의

OpenLayers 및 GeoServer를 사용하여 맵 레이어를 게시하고 싶습니다. 이것이 설정하기 쉽지만 인증 가능성에 관해서는 약간 잃어 버렸습니다. 내가 원하는 것은 자신의 사용자 이름과 암호로 로그인하여 자신의지도 창으로 연결되는 다른 사용자를 만드는 것입니다. 내 사용자가 서로의 계층에 액세스 할 수 없도록 어떻게 안전하게 할 수 있습니까?

예를 들어 GeoServer에 쿼리하여 사용 가능한 모든 레이어를 나열하도록 요청함으로써 설정을 “해킹”하는 것이 매우 쉽다는 것을 이해했습니다.

내 옵션은 무엇입니까? 우분투 서버에서 아파치가 도움이 될 수 있다고 생각합니까? 이 주제에 대한 자습서가 있습니까?



답변

우선, 보안에 관한 Geoserver 문서를 읽어야한다고 생각합니다. http://docs.geoserver.org/stable/en/user/security/index.html 다른 사용자 나 역할이 레이어에 액세스하거나 액세스 할 수 없게 할 수 있습니다.

또 다른 가능한 해결책은 외부 세계에서 지오 서버에 액세스 할 수 없도록하고 (서버의 포트 8080을 IP의 다른 호스트의 경우 로컬 호스트에 가깝게) 선택한 웹 프로그래밍 언어로 인증 메커니즘을 직접 만드는 것입니다.

예를 들어, 일단 인증되면 로컬 호스트의 지오 서버로 요청을 전달하는 일종의 로그인 / 인증을 PHP에서 설정할 수 있습니다.


답변

당신은 GeoPrisma를 볼 수 있습니다

합리적인 데이터 세트에 보안을 갖춘 웹 매핑 응용 프로그램을 만들어야했습니다. 여러 응용 프로그램에서 표준 로그인 + 암호 액세스 권한을 부여하여이 작업을 수행 할 수 있었지만 프로젝트가 너무 커서 유지 관리가 매우 복잡했습니다. 예를 들어 새 데이터 세트를 추가하려면 각 애플리케이션을 수동으로 수정하고 보안을 조정해야합니다.

이것이 바로 사용 가능한 OpenSource 웹 매핑 응용 프로그램을 사용하여 데이터 집합에 대한 액세스 제어를 포함하는 자체 웹 매핑 응용 프로그램을 개발하기로 결정한 이유입니다.

http://geoprisma.org/dist/build/html/introduction/index.html

문서를 스캔했을 것입니다. 시스템에 몇 개의 레이어 / 사용자 만있는 경우 간단한 프로젝트에 추가하는 것이 과도 할 수 있습니다. 다른 데이터 세트에 대한 편집 권한이있는 100 명의 사용자 / 그룹이있는 경우 GeoPrisma와 같은 기존 프로젝트를 사용하는 것이 좋습니다.

그렇지 않으면 HTTP를 기반으로 구축 된 표준 웹 서버 보안으로 충분할 것입니다.


답변

이 문장을 디버깅하십시오

$ type = $ _ GET [ ‘FORMAT’];

URL의 매개 변수로 FORMAT 값을 전달하면 서버에서 맵 (이미지)을 얻습니까? 얻을 경우 프록시가 제대로 작동해야합니다.


답변

한 가지 방법은 같은 프록시를 구현하는 것 라고되고있는 층의 URL을 확인하고 경우 액세스를 거부 : 세션 변수를 사용하여 로그인으로 사용자의 자격 증명을 확인하고 그들 만이받을 수 있습니다 리소스에 액세스, 즉에게 허용 할 수있는 사용자는 볼 권한이 없습니다.

그들이 볼 수있는 데이터 측면에서, 더 큰 데이터 세트의 하위 세트 인 경우 이것은 조금 더 복잡하지만 두 가지 접근법이 있습니다.

  1. 매개 변수화 된 SQL보기 를 사용 하여 사용자에게 표시되는 데이터를 제어하십시오. 프록시를 사용하여 URL을 해당 사용자에게 고유 한 매개 변수로 Geoserver에 전달되기 전에 URL을 변경할 수 있습니다. 또한 사용자가 인증 된 후 Ajax 호출을 통해 매개 변수를 다시 Openlayers로 전송하고 OpenLayers에서 WMS getMAP 호출의 일부로 매개 변수를 제공 할 수 있습니다. 표시된 실제 데이터는 표시된 데이터 를 필터링하기 위해 SLD의 변수 대체 또는 WMS getMap 호출에서 외부 스타일 을 사용하여 사용자가 지정된 계층을 표시하는 데 사용하는 SLD를 변경하여 처리 할 수 ​​있습니다 .

  2. 사용자 인증 후 Ajax 호출을 사용하여 사용자가 지정된 영역 주위에서만 움직일 수 있도록 맵 범위 를 지정하십시오. layerVisibility ()를 사용하여 표시 할 수있는 데이터를 제한 할 수도 있습니다.


답변

  1. 먼저 프로그래밍 언어로 프록시 URL을 작성하십시오.
  2. 이 프록시 URL은 지오 서버에 도달합니다.
  3. 이 프록시 URL에서 사용자 및 페이지 참조로 인증을 수행 할 수 있습니다. 웹 애플리케이션에서 URL이 참조되는지 여부를 확인할 수 있습니다. 단순히 인증되지 않은 헤더를 보내지 않는 경우.
  4. 지리적 서버 URL 대신이 프록시 URL을 사용하게됩니다.
  5. 아무도 Geoserver의 정확한 URL이 무엇인지 알 수 없으며이를 해킹 할 수 없습니다.
  6. 사용자 보안의 경우 프록시 URL에서 사용자 확인을 추가하기 만하면됩니다.
  7. Open Layers에서 wms-url을 다음과 같이 전달하십시오. http://domainname.com//proxyUrl.php?user=userid

답변