環境
現在のプロジェクトでは、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管理インターフェイスのフィルターパネルに新しいアイテムがあり、それをデフォルトのマッピングで使用しました(下の画像を参照してください)。
問題の説明
ここにいます...
クライアント(OpenLayers)が発行した私のデフォルトのマッピング(/ **)に一致するWFS要求は、定義されたフィルターを通過しません。デバッグ中に、Spring Contextで定義されたフィルターチェーンに私の定義が含まれているのではなく、常に、匿名、ダイジェスト、または基本のいずれかを使用する古典的なチェーンが含まれていることがわかりました...
質問
それで、私がどのようにそれをしなければならないかについての(より多くの^^)より完全なドキュメントで私を指摘できる誰かがいますか?