当前位置: 首页 > 知识库问答 >
问题:

删除向导管理员 servlet 的安全性(版本 1.1.1)

庄高谊
2023-03-14

我正在使用< code>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);

最近,我将我的管理页面移到了我的web应用程序中。代码在这里:

    environment.getApplicationContext().setAttribute(
            MetricsServlet.METRICS_REGISTRY,
            environment.metrics());
    environment.getApplicationContext().setAttribute(
            HealthCheckServlet.HEALTH_CHECK_REGISTRY,
            environment.healthChecks());
    environment.getApplicationContext().addServlet(
            new NonblockingServletHolder(new AdminServlet()), "/admin/*");

如何将安全上下文添加到< code>Dropwizard管理servlet中?

我已经查看了这个StackOverflow答案,但似乎没有任何工作。看起来答案里的一切都被否决了。

共有1个答案

微生嘉
2023-03-14

嗯,管理servlet是一个普通的旧servlet,而不是Jersey资源。假设您正在创建一个新的管理servlet(是否正在禁用默认的管理上下文?)在应用程序上下文中,您可以简单地将servlet过滤器注册到应用程序上下文,如下所示:

environment.getApplicationContext().addFilter(new FilterHolder(new AdminServletFilter()), "/admin/*", EnumSet.of(DispatcherType.REQUEST));

您的AdminServletFilter可以以任何您喜欢的方式对用户进行身份验证,例如,如果您想进行基本身份验证,请使用此实现。

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

server:
  type: simple
  adminContextPath: /admin
  applicationContextPath: /
  connector:
    type: http
    port: 8080

另外,我已经更新了您链接到的问题,其中包含适用于最新Dropwizard版本的安全处理程序实现。有了这个,您可以通过注册安全处理程序来保护管理 servlet:

environment.admin().setSecurityHandler(new AdminConstraintSecurityHandler("admin", "supersecret"));
 类似资料:
  • 仅企业版可用 请求header DELETE /v1/account/deleteActManager Authorization:Bearer {ACCESS TOKEN} 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请求payload { "manager_id" : 233, "is_delete_act" : 1 } payload参

  • 我想要受保护的网址 /admin/和我使用symfony书,但不工作罚款,我有用户不是用户捆绑只是实体用户和字段角色=ROLE_ADMIN或ROLE_USER,ROLE_FREELANCER。我有SecurityBundle在标准完成。现在,如果我输入的开发人员有ROLE_FREELNANCER我去这个角色的行动,但如果我过去的网址admin/Tim/dashboard这个开发人员输入这个网址,这

  • 有没有办法给管理servlet增加登录安全性? 似乎在V0.7中,您可以将以下两个添加到您的yaml文件中: 然而,我在最新版本(0.9.2)中尝试了,它给我一个错误,说:server.yaml有一个错误: 这是我拥有的:

  • Kuberentes 支持多租户,这就需要对集群的安全性进行管理。

  • 为了保证安全的删除, Android Studio会找到被删除字符, 结果会在工具栏展示,可以在删除之前对代码进行修正。 操作步骤: 菜单栏: Refactor —> Safe Delete...

  • 1 分支管理 常用远程分支: master dev prd feature- hotfix- release- tag管理: 凡是部署版本给客户验证的,均应该打上tag以进行标识。 release管理: release分支,name字段为相应客户的名字。例如release-zhangjiakou 2 版本号规范 版本规范参考文档 <major>.<minor>.<patch>-<stage>.<