GeoServerレイヤーを認証の背後に配置する方法は?


29

OpenLayersとGeoServerを使用してマップレイヤーを公開したい。これは簡単に設定できますが、認証の可能性に関しては少し迷っています。私が欲しいのは、独自のユーザー名とパスワードでログインすることで、独自のマップウィンドウにリダイレクトされるさまざまなユーザーを作成することです。どうすればこれを安全に実行して、ユーザーがお互いのレイヤーにアクセスできないようにすることができますか?

たとえば、利用可能なすべてのレイヤーを一覧表示するように要求するGeoServerに対してクエリを実行することにより、セットアップを「ハッキング」することは非常に簡単であることがわかりました。

私のオプションは何ですか?私のubuntuサーバーでApacheをセットアップする際にApacheが役立つと思いますか?このテーマに関するチュートリアルはありますか?

回答:


20

まず、セキュリティに関するGeoserverのドキュメントを読む必要があると思います。http://docs.geoserver.org/stable/en/user/security/index.htmlさまざまなユーザーまたはロールがレイヤーをアクセス可能/アクセス不能にすることが可能であることがわかります。

別の可能な解決策は、外部からジオサーバーにアクセスできないようにし(localhost以外のIPのサーバーのポート8080を閉じる)、選択したWebプログラミング言語で認証メカニズムを自分で作成することです。

たとえば、PHPで何らかの認証を行うと、localhost上のジオサーバーにリクエストを転送するログイン/認証を設定できます。


さらに、アプリケーションのユーザーとGeoServerのユーザー/ロール/レイヤーとの関連付けを持つルックアップテーブルを作成し、GeoServerにレイヤーレベルのセキュリティを適用できます。そのため、OpenLayerのプロキシがレイヤーを要求すると、対応するGeoserver資格情報を検索して認証し、アクセス可能なレイヤーを返します。このようにして、ユーザーは自分が望む他のレイヤーを要求しようとすることができますが、アクセスできない限り取得できません。
CaptDragon

9

GeoPrismaを見ることができます

賢明なデータセットのセキュリティを備えたWebマッピングアプリケーションを作成する必要がありました。これは、複数のアプリケーションを使用し、それらに標準のログイン+パスワードアクセスを行うことで実現できましたが、プロジェクトが大きすぎて、維持するのが非常に複雑でした。たとえば、新しいデータセットを追加するには、各アプリケーションを手動で変更したり、セキュリティを調整したりする必要があります。

そこで、利用可能なOpenSource Webマッピングアプリケーションを使用して、データセットへのアクセス制御を含む独自のWebマッピングアプリケーションを開発することにしました。

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

私はドキュメントをスキャンしたいと思います-システム上に少数のレイヤー/ユーザーしかない場合、これを単純なプロジェクトに追加するのはやり過ぎかもしれません。さまざまなデータセットの編集権限を持つ100人のユーザー/グループがある場合、おそらくGeoPrismaなどの既存のプロジェクトを使用するのが理にかなっています。

それ以外の場合は、HTTPを中心に構築された標準的なWebサーバーセキュリティで十分でしょう。


GeoPrismaはGeoServerで使用できますか?彼らには実績がありますか?
ミモ

GeoServerを含む任意のWMSサーバーで使用できます。上に追加されたコメント。
地理学

0

この文をデバッグしてください

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

URLのパラメーターとしてFORMATの値を渡すと、サーバーからmap(image)を取得できますか。取得している場合、プロキシは正常に機能しているはずです。


0

一つのアプローチは次のようにプロキシを実装するだろう、この呼ばれている層のURLをチェックし、あればアクセスを拒否:セッション変数を使用してログインしてユーザーの資格情報を確認し、彼らだけがに資格を与えているアクセスリソース、すなわちそれらをできるというユーザーはそれらを表示する権限がありません。

表示されるデータに関して、それがより大きなデータセットのサブセットである場合、これはもう少し複雑ですが、2つのアプローチがあります。

  1. パラメーター化されたSQLビューを使用して、ユーザーに表示するデータを制御します。プロキシを使用してURLを変更してから、そのユーザーに固有のパラメーターとともにURLをGeoserverに渡すことができます。ユーザーが認証された後、Ajaxコールを介してOpenlayersにパラメーターを返送し、OpenLayersでWMS getMAPコールの一部としてパラメーターを提供することもできます。表示される実際のデータは、表示されるデータをフィルター処理するSLDの変数置換によって、またはWMS getMap呼び出しで外部スタイルを使用して、ユーザーが特定のレイヤーの表示に使用するSLDを変更することによって処理できます。

  2. ユーザー認証の後にAjax呼び出しを使用して、マップ範囲を指定し、ユーザーが指定された領域内を移動できるようにします。layerVisibility()を使用して、表示できるデータを制限することもできます。


0
  1. 最初に(プログラミング言語で)プロキシURLを作成します。
  2. このプロキシURLは、ジオサーバーにヒットします。
  3. このプロキシURLでは、ユーザーとページの参照で認証を行うことができます。URLがwebAppから参照されているかどうかを確認できます。そうでない場合は、単にUnauthorized Headerを送信します。
  4. ジオサーバーURLではなく、このプロキシURLにアクセスします。
  5. Geoserverの正確なURLが何であるかを誰も知ることができず、Geoserverをハッキングすることはできません。
  6. ユーザーのセキュリティについては、プロキシURLにユーザーのチェックを追加するだけです。
  7. Open Layersから、次のようにwms-urlを渡します。http://domainname.com//proxyUrl.php?user = userid
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.