2016-04-13 150 views
0

有沒有一種方法爲管理servlet添加登錄安全性?Dropwizard管理安全

好像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 
+0

他們沒有在[配置參考](http://www.dropwizard.io/0.9.2/docs/manual/configuration.html#servers)中提到這兩個字段。所以他們可能不再支持他們了。 – zloster

+0

是否有添加管理安全的另一種方式? – user3711455

+0

可能帶有一些半自定義代碼。查看[他們的例子](http://www.dropwizard.io/0.9.2/docs/manual/auth.html#basic-authentication)。 – zloster

回答

0

我在Heroku上運行一個應用程序,它只允許應用程序創建一個可用的端口。我這個附加AdminServlet到主HTTP端口(8080)在我的應用程序的run()方法(科特林):

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

然後,我保護了BasicAuthFilter這個路徑(仍科特林,你應該使用它) :

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