扩展@earcam 的出色建议,我建议通过声明式服务和元类型绑定您的配置。它真的很容易,尤其是使用 Felix 注释。下面是一个使用 JAAS 进行身份验证的服务的简化示例,它具有可配置的 JAAS 领域名称。“ConfigurationPolicy.OPTIONAL”是很棒的部分。如果将其设置为 REQUIRE,则在配置之前不会注册服务。
@Component(
name = "com.example.authprovider",
label = "Example authentication interceptor",
description = "Blocks unauthenticated access to REST endpoints",
specVersion = "1.1",
metatype = true,
policy = ConfigurationPolicy.OPTIONAL
)
@Service
@References({
...
})
@Properties({
@Property(name="jaasRealm", value = "default", label="JAAS Realm",
description = "the JAAS realm to use to find LoginModules to authenticate this login"),
...
})
public class Foo implements ... {
...
}
如果您采用这种方法并使用像 Apache Karaf 这样的元类型友好容器,那么您将在管理 Web 控制台中免费获得自动生成的配置 UI。