【问题标题】:How to obscure a password in OSGi Felix component property?如何隐藏 OSGi Felix 组件属性中的密码?
【发布时间】:2015-10-26 23:48:18
【问题描述】:

我有一个使用注释声明的 OSGi 组件,它允许通过 Felix 的配置 UI 配置登录凭据属性。我已经看到其他组件掩盖了密码的属性文本字段,但我的仍然是明确的。我假设@Property 注释中只包含一个标志,但我在documentation 中找不到任何提及。

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

【问题讨论】:

  • 这听起来是个糟糕(非常不安全)的想法。
  • 我不知道你为什么这么说。 Felix 的配置 UI 已经对管理员用户锁定。并且需要将其配置为将凭据传递给其他服务器(数据库、ldap 等)。这只是为了让从管理员的肩膀上看的人在输入密码时看不到密码。

标签: java osgi apache-felix


【解决方案1】:

有一个注解属性可以使用:

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 参数进行注释,而PASSWORD 使用passwordValue 参数进行注释。使用passwordValue 会触发字段在 OSGi 控制台中被隐藏。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 但是声明式服务是否提供PASSWORD 属性类型?我只使用了声明性方法。将声明性与我需要捆绑的任何配置文件混合以将其配置为密码字段似乎需要做很多工作。我认为声明性propertyPrivate 属性也满足了“句号”功能。 (我希望这会使其成为密码字段,但它只是将其隐藏在 UI 中。)
    猜你喜欢
    • 2016-09-21
    • 2017-09-25
    • 2013-10-02
    • 2010-10-02
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多