Java 如何隐藏OSGi Felix组件属性中的密码?

Java 如何隐藏OSGi Felix组件属性中的密码?,java,osgi,apache-felix,Java,Osgi,Apache Felix,我有一个OSGi组件,声明了一个注释,它允许通过Felix的配置UI配置登录凭证属性。我见过其他组件,它们隐藏了密码的属性文本字段,但我的组件仍然是透明的。我假设@Property注释中只包含了一个标志,但我在注释中找不到任何提及它的内容 有人知道如何在配置UI中创建密码字段吗?OSGi元类型服务规范确实支持一种属性类型,UI应该使用该属性类型来隐藏文本字段 此外,在声明性服务中,以句号开头的属性名称(例如,.password)不会作为服务属性发布到任何服务组件上。该特性在零部件特性中可用 可以

我有一个OSGi组件,声明了一个注释,它允许通过Felix的配置UI配置登录凭证属性。我见过其他组件,它们隐藏了密码的属性文本字段,但我的组件仍然是透明的。我假设@Property注释中只包含了一个标志,但我在注释中找不到任何提及它的内容


有人知道如何在配置UI中创建密码字段吗?

OSGi元类型服务规范确实支持一种属性类型,UI应该使用该属性类型来隐藏文本字段


此外,在声明性服务中,以句号开头的属性名称(例如,
.password
)不会作为服务属性发布到任何服务组件上。该特性在零部件特性中可用

可以使用注释属性:

private static final String DEFAULT_USERNAME = StringUtils.EMPTY;
private String username = DEFAULT_USERNAME;
@Property(label="username", description="user name", value=DEFAULT_USERNAME )
public static final String USERNAME = "xxx.username";

private static final String DEFAULT_PASSWORD = StringUtils.EMPTY;
private String password = DEFAULT_PASSWORD;
@Property(label="password", description="user password", passwordValue=DEFAULT_PASSWORD )
public static final String PASSWORD = "xxx.password";

请注意,
USERNAME
常量用
value
参数注释,其中as
PASSWORD
passwordValue
参数注释。正是使用
passwordValue
触发了OSGi控制台中字段的模糊。

这听起来像是一个糟糕(非常不安全)的想法。我不知道你为什么这么说。Felix的配置UI已经锁定给管理员用户。并且需要将其配置为向其他服务器(数据库、ldap等)传递凭据。这仅仅是为了让那些从管理员的肩膀上看过去的人在输入密码时看不到密码。但是声明性服务是否提供了
PASSWORD
属性类型?我只使用了声明性方法。将声明性文件与我需要绑定的配置文件混合在一起以将其配置为密码字段似乎需要做很多工作。我认为声明性
propertyPrivate
属性也满足了“句号”功能。(我希望这会使其成为密码字段,但它只是将其隐藏在UI中。)