GeoServer katmanları kimlik doğrulamanın arkasına nasıl yerleştirilir?


29

OpenLayers ve GeoServer kullanarak harita katmanlarını yayınlamak istiyorum. Bunu ayarlamak yeterince kolay olsa da, kimlik doğrulama olanaklarına gelince biraz kayboldum. İstediğim şey, kendi kullanıcı adı ve şifresi ile giriş yaparak kendi harita pencerelerine yönlendirilecek farklı kullanıcılar oluşturmak. Bu, nasıl güvenli bir şekilde yapılabilir ki, hiçbir kullanıcım birbirlerinin katmanlarına erişemeyecek.

Örneğin, kurulumun "kesilmesi" nin, örneğin mevcut tüm katmanları listelemesinin istendiği GeoServer'a sorgular yapmak oldukça kolay olduğunu anladım.

Seçeneklerim neler? Sanırım apache benim ubuntu sunucumda kurarken yardımcı olabilir mi? Bu konuda herhangi bir ders var mı?

Yanıtlar:


20

Öncelikle, Güvenlik ile ilgili Geoserver belgelerini okumalısınız. http://docs.geoserver.org/stable/en/user/security/index.html , katmanları farklı kullanıcılara veya rollere erişebilir / erişilemez hale getirmenin mümkün olduğunu keşfedeceksiniz.

Başka bir olası çözüm, coğrafi sunucuyu dış dünyadan erişilemez hale getirmek (IP'in diğer yerel sunucu için sunucunuzdaki 8080 numaralı bağlantı noktasını kapatın) ve daha sonra seçtiğiniz web programlama dilinde kendiniz bir kimlik doğrulama mekanizması oluşturmak olacaktır.

Örneğin: php'de bir kez kimlik doğrulaması yapıldığında localhost'taki istekleri yerel sunucuya ileten bir tür giriş / kimlik doğrulama kurabilirsiniz.


Ek olarak: Uygulamanızın Kullanıcıları ile GeoServer Kullanıcıları / Rolleri / Katmanları arasında ilişkileri olan ve GeoServer'da katman düzeyinde güvenlik uygulayan arama tablosuna sahip olabilirsiniz. Böylece, OpenLayer'in proxy'si bir katman istediğinde ilgili Geoserver kimlik bilgilerine bakar, kimliklerini doğrular ve erişebildiği katmanı döndürür. Bu şekilde kullanıcı istediği herhangi bir katmanı talep etmeye çalışabilir, ancak erişimi olmadıkça elde edemez.
CaptDragon

9

Sen bir göz olabilir GeoPrisma

Mantıklı veri kümelerinde güvenlik ile Web haritalama uygulaması yapmamız gerekiyordu. Bu, birden fazla uygulama ile gerçekleştirilebilir ve bunlara standart bir oturum açma + şifre erişimi koyarak başarılabilirdi, ancak proje çok büyüktü ve bakımı çok karmaşık olurdu. Örneğin yeni bir veri kümesi eklemek, her uygulamanın manuel olarak değiştirilmesi, güvenlik ayarlarının yapılması vb.

Bu nedenle, mevcut Açık Kaynaklı Web eşleme uygulamalarını kullanarak veri kümeleri üzerinde erişim kontrolü içeren kendi Web haritalama uygulamamızı geliştirmeye karar verdik.

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

Dokümantasyonun bir taramasını yapardım - eğer sisteminizde sadece birkaç katman / kullanıcı varsa, bunu basit bir projeye eklemek fazladan olabilir. Farklı veri kümelerinde düzenleme haklarına sahip 100'lü kullanıcı / grup varsa, GeoPrisma gibi mevcut bir projeyi kullanmak muhtemelen mantıklı olacaktır.

Aksi takdirde, HTTP etrafında oluşturulan standart web sunucusu güvenliği muhtemelen yeterli olacaktır.


GeoPrisma GeoServer ile kullanılabilir mi? Kanıtlanmış bir sicili var mı?
Mimo

GeoServer dahil olmak üzere herhangi bir WMS Sunucusu ile kullanılabilir. Yorumlar yukarıda eklendi.
coğrafya

0

Lütfen bu ifadede hata ayıklayın

$ Type = $ _ GET [ 'FORMAT'];

URL'nin parametreleri olarak FORMAT değerini ilettiğinizde, haritayı (görüntü) sunucudan alıyor musunuz, eğer alıyorsanız, proxy'niz iyi çalışıyor olmalıdır.


0

Bir yaklaşım gibi Proxy uygulamak olacaktır bu denilen ediliyor katmanları için bağlantıyı kontrol edin ve eğer erişimi reddetmek: oturum değişkenleri kullanarak oturum olarak bir kullanıcının kimlik bilgilerini doğrulamak ve yalnızca onlar hak kazanırlar erişim kaynakları, yani onları olanak verebilecek kullanıcı bunları görüntüleme yetkisine sahip değil.

Hangi verileri görebilecekleri açısından, eğer daha büyük bir veri kümesinin alt kümesiyse, bu biraz daha karmaşık ama iki yaklaşım görüyorum.

  1. Kullanıcının göreceği verileri kontrol etmek için Parametreli SQL Görünümleri kullanın . Proxy’yi, o kullanıcıya özel parametrelerle Geoserver’a iletilmeden önce URL’yi değiştirmek için kullanabilirsiniz. Parametreleri, kullanıcının kimliği doğrulandıktan sonra Ajax Çağrısı yoluyla Openlayers'a geri gönderebilir ve parametreleri OpenLayers'ta WMS getMAP çağrısının bir parçası olarak sağlayabilirsiniz. Görüntülenen gerçek veriler, görüntülenen verileri filtrelemek için SLD'deki Değişken değiştirme ile veya kullanıcının belirli bir katmanı görüntülemek için kullandığı SLD'yi değiştirmek için WMS getMap aramalarınızdaki Dış Stiller kullanılarak gerçekleştirilebilir .

  2. Kullanıcının yalnızca belirli bir alanda hareket etmesine izin vermek için Harita Kapsamlarını belirlemek için Kullanıcı Doğrulamadan Sonra bir Ajax Araması kullanın . Hangi verilerin görüntülenebileceğini de sınırlamak için layerVisibility () öğesini de kullanabilirsiniz.


0
  1. İlk önce bir Proxy URL'si oluşturun (programlama Dilinizde).
  2. Bu Proxy URL'si coğrafi sunucuya isabet edecek.
  3. Bu proxy URL'sinde, Kullanıcılar ve Sayfa refferes ile doğrulamayı yapabilirsiniz. URL'nin web uygulamanızdan ya da Not'unuzdan geldiğini kontrol edebilirsiniz. Sadece Yetkisiz Bir Başlık göndermeyin.
  4. Jeo-sunucu URL’niz yerine bu proxy URL’yi vuracaksınız.
  5. Geoserver'ın URL'sinin tam olarak ne olduğunu kimse bilemez ve hackleyemez.
  6. Kullanıcılarla Güvenlik için, Proxy URL’sindeki Kullanıcıların bir kontrolünü eklemeniz yeterlidir.
  7. Açık Katmanlar’dan wms-url’yi şu şekilde iletin: http://domainname.com//proxyUrl.php?user=userid
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.