GeoServer 2.3.0でカスタム認証フィルターを作成する
環境 現在のプロジェクトでは、GeoServer(2.3.0)へのリクエストが許可されていることを検証する必要があります。 プロジェクトはそれらの事実を保持します: GSクライアントはプリンシパル情報(たとえばパスワード)を提供できません。GS自体はユーザー/ロールリポジトリと接続していません そこで、それを確認するためにauthフィルターメカニズムを使用する機会を得ました。 (特定のWFS層への)有効なリクエストには、特別なHTTPヘッダーが含まれます(X-CUSTOM-VALIDとしましょう) このヘッダーはJSONエンコードされたメッセージで、有効な3番目のシステム(ユーザー名、シークレットなど)に接続されたクライアントによって要求が開始されたことを検証するのに十分な情報を保持しています。 状態 ドキュメントには、我々はそうすることができるはずと私たちに言っています... ただし、ドキュメントには、そのようなコンポーネントの作成方法と構成方法が明確ではありません。 GeoServerのデバッグこのようなフィルターを構成するには、専用の認証プロバイダーが必要であることがわかりました。それは、Web管理インターフェースにパネルを配置するために(認証の下、認証フィルターリスト内) パネル したがって、私のコードはこれらのファイルで構成されています。 ProducteurAuthFilterPanel.java ProducteurAuthFilterPanelInfo.java ProducteurAuthenticationFilterConfig.java ProducteurAuthenticationFilterPanel.html これらは、Web管理インターフェースでパネルを追加するために必要です。ProducteurAuthFilterPanelInfoは来世ProducteurAuthenticationFilter(THE フィルター ^^)と一緒に他の2つを接着しています。 ProducteurAuthenticationFilterConfigそのコンストラクタでそれを宣言します。 setClassName(ProducteurAnonymousAuthenticationProvider.class.getName()); setName("producteur"); フィルター(およびプロバイダー) さて、チェーンに含まれるフィルターを作成するために必要なクラス(おそらく): ProducteurAuthenticationFilter:フィルター実装の拡張GeoServerSecurityFilterと実装GeoServerAuthenticationFilter ProducteurAnonymousAuthenticationProvider:新しいフィルターを定義するために、どういうわけかパネル(上記)に必要 ProducteurAuthenticationException:AuthenticationEntryPointで使用(現時点ではHttp403ForbiddenEntryPointのみ) 最後に、Beanは次のように定義されています。 <bean id="yaanonymousFilterProvider" class="dgarne.java.geoserver.security.ProducteurAnonymousAuthenticationProvider"/> <bean id="producteurAuthPanelInfo" class="dgarne.java.geoserver.security.ProducteurAuthFilterPanelInfo"> <property name="id" value="security.producteurAuthFilter" /> <property name="shortTitleKey" value="ProducteurAuthFilterPanel.short"/> <property name="titleKey" value="ProducteurAuthFilterPanel.title"/> <property name="descriptionKey" value="ProducteurAuthFilterPanel.description"/> </bean> ゲームの最後に、Web管理インターフェイスのフィルターパネルに新しいアイテムがあり、それをデフォルトのマッピングで使用しました(下の画像を参照してください)。 …