Java Dropwizard管理servlet的安全性(版本1.1.1)

Java Dropwizard管理servlet的安全性(版本1.1.1),java,dropwizard,Java,Dropwizard,我正在使用Dropwizard(1.1.1) 我的安全上下文定义如下: environment.jersey().register(new AuthDynamicFeature(new BasicCredentialAuthFilter.Builder<User>() .setAuthenticator(new BasicAuthenticator()) .setAuthorizer(new BasicAuthorizer())

我正在使用
Dropwizard(1.1.1)

我的安全上下文定义如下:

    environment.jersey().register(new AuthDynamicFeature(new BasicCredentialAuthFilter.Builder<User>()
            .setAuthenticator(new BasicAuthenticator())
            .setAuthorizer(new BasicAuthorizer())
            .setRealm("SECURITY REALM")
            .buildAuthFilter()));

    environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
    environment.jersey().register(RolesAllowedDynamicFeature.class);
如何向Dropwizard管理servlet添加安全上下文


我已经看过了,但似乎没有任何效果。看起来该答案中的所有内容都已弃用。

嗯,管理servlet是一个普通的旧servlet,而不是一个资源。假设您正在应用程序上下文中创建一个新的管理servlet(是否禁用默认管理上下文?),您只需向应用程序上下文注册一个servlet筛选器,如下所示:

environment.getApplicationContext().addFilter(new FilterHolder(new AdminServletFilter()), "/admin/*", EnumSet.of(DispatcherType.REQUEST));
您的
AdminServletFilter
可以以您喜欢的任何方式对用户进行身份验证,例如,如果您想进行基本身份验证,请使用此选项

也就是说,如果您打算将管理servlet移动到与应用程序连接器运行在同一端口上,那么更好的方法是通过配置:

server:
  type: simple
  adminContextPath: /admin
  applicationContextPath: /
  connector:
    type: http
    port: 8080
此外,我还使用适用于最新Dropwizard版本的安全处理程序实现更新了您链接到的问题。有了它,您可以通过注册安全处理程序来保护管理servlet:

environment.admin().setSecurityHandler(new AdminConstraintSecurityHandler("admin", "supersecret"));

好的,管理servlet是一个普通的旧servlet,而不是一个Jersey资源。假设您正在应用程序上下文中创建一个新的管理servlet(是否禁用默认管理上下文?),您只需向应用程序上下文注册一个servlet筛选器,如下所示:

environment.getApplicationContext().addFilter(new FilterHolder(new AdminServletFilter()), "/admin/*", EnumSet.of(DispatcherType.REQUEST));
您的
AdminServletFilter
可以以您喜欢的任何方式对用户进行身份验证,例如,如果您想进行基本身份验证,请使用此选项

也就是说,如果您打算将管理servlet移动到与应用程序连接器运行在同一端口上,那么更好的方法是通过配置:

server:
  type: simple
  adminContextPath: /admin
  applicationContextPath: /
  connector:
    type: http
    port: 8080
此外,我还使用适用于最新Dropwizard版本的安全处理程序实现更新了您链接到的问题。有了它,您可以通过注册安全处理程序来保护管理servlet:

environment.admin().setSecurityHandler(new AdminConstraintSecurityHandler("admin", "supersecret"));

作为参考,在这种情况下,在旧问题上获得新关注的正确方法是在旧问题上提供奖励,以获得新的、最新的答案。作为参考,在这种情况下,在旧问题上获得新关注的正确方法是在旧问题上提供奖励,以获得新的、最新的答案。谢谢!那帮了大忙!谢谢那帮了大忙!