【问题标题】:Dropwizard admin securityDropwizard 管理员安全性
【发布时间】:2016-04-13 19:10:37
【问题描述】:

有没有办法为 admin servlet 添加登录安全性?

似乎在 V0.7 中您可以将以下两个添加到您的 yaml 文件中:

  adminUsername: user1234
  adminPassword: pass5678

但是我在最新版本(0.9.2)中尝试过,它给了我一个错误说: server.yaml 有错误:

  * Unrecognized field at: server.adminConnectors.[0].adminUsername
    Did you mean?:
      - soLingerTime
      - bindHost
      - idleTimeout
      - useServerHeader
      - useDateHeader
        [14 more]

这就是我所拥有的:

  adminConnectors:
    - type: http
      port: 9180
      adminUsername: user1234
      adminPassword: pass5678

【问题讨论】:

  • 他们在configuration reference 中没有提到这两个字段。所以他们可能不再支持他们了。
  • 还有其他增加管理员安全性的方法吗?
  • 可能带有一些半自定义代码。查看their example。
  • 这是您注册的资源。管理资源与 dropwizard 预打包

标签: dropwizard


【解决方案1】:

我在 Heroku 上运行一个应用程序,它只允许应用程序提供一个可用的端口。我在我的应用程序(Kotlin)的run() 方法中将AdminServlet 附加到主HTTP 端口(8080):

environment.applicationContext.apply {
    setAttribute(MetricsServlet.METRICS_REGISTRY, environment.metrics())
    setAttribute(HealthCheckServlet.HEALTH_CHECK_REGISTRY, environment.healthChecks())
    addServlet(NonblockingServletHolder(AdminServlet()), "/admin/*")
}

然后,我用BasicAuthFilter 保护这条路径(仍然是 Kotlin,你应该使用它):

val basicAuthFilter = BasicAuthFilter("admin", configuration.adminUsername, configuration.adminPassword)
val adminFilter = environment.servlets().addFilter("AdminFilter", basicAuthFilter)
adminFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/admin/*")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多