nexus oss で規定されているフィルターの代わりに新しいフィルターを使用する必要がある nexus oss のプラグインを作成しています。
以前のバージョンの nexus oss では、すべてのフィルターが web.xml で次のように定義されていました。
<filter>
<filter-name>nexusFilter</filter-name>
<filter-class>org.sonatype.nexus.security.filter.NexusJSecurityFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>
[filters]
authcBasic = org.sonatype.nexus.security.filter.authc.NexusSecureHttpAuthenticationFilter
authcBasic.applicationName = Sonatype Nexus Repository Manager API
authcBasic.fakeAuthScheme = false
authcNxBasic = org.sonatype.nexus.security.filter.authc.NexusSecureHttpAuthenticationFilter
authcNxBasic.applicationName = Sonatype Nexus Repository Manager API (specialized auth)
authcNxBasic.fakeAuthScheme = true
以前はこの web.xml を変更して、nexus oss の NexusSecureHttpAuthenticationFilter の代わりにフィルターを取得するだけで、作業は完了です。
しかし、現在、nexus oss の最新バージョンでは、Java ファイルですべてのフィルター構成を行っています。
@Named
public class NexusSecurityFilterModule
extends AbstractModule
{
@Override
protected void configure()
{
requireBinding( FilterChainResolver.class );
bindAuthcFilter( "authcBasic", false, "Sonatype Nexus Repository Manager API" );
bindAuthcFilter( "authcNxBasic", true, "Sonatype Nexus Repository Manager API (specialized auth)" );
.
.
.
private void bindAuthcFilter( String name, boolean fakeAuthSchem, String applicationName )
{
NexusSecureHttpAuthenticationFilter filter = new NexusSecureHttpAuthenticationFilter();
filter.setApplicationName( applicationName );
filter.setFakeAuthScheme( Boolean.toString( fakeAuthSchem ) );
bindNamedFilter( name, filter );
}
.
.
private void bindNamedFilter( String name, Filter filter )
{
Key<Filter> key = Key.get( Filter.class, Names.named( name ) );
bind( key ).toProvider( defer( filter ) ).in( Scopes.SINGLETON );
}
フィルター構成の完全な Java コードは、ここNexusSecurityFilterModule.javaにあります。
そのため、nexus oss で NexusSecurityFilterModule.java の代わりにフィルターを使用する方法がわかりません。ここでの障害は、 web.xml で行ったように簡単に変更できない Java ファイルであるためです。彼らが Java ファイルで構成したフィルターをオーバーライドして、nexus oss にカスタム フィルターを使用させる方法はありますか。