在数据源中使用认证别名有什么好处?

What are the advantages of using authentication alias in data sources?

当我在 WebSphere Liberty

server.xml 中添加包含 userpassword 属性的数据源时

示例:

<dataSource jdbcDriverRef="db2-driver" type="javax.sql.DataSource">
  <properties.db2.jcc user="MyUser" password="MyPassword"
                databaseName="dbName" serverName="localhost" portNumber="50000"/>
</dataSource>

我在日志中收到以下警告:

J2CA8050I: An authentication alias should be used instead of defining a user name 
           and password on dataSource[default-0].

Configuring authentication aliases for the Liberty profile 中查看如何执行此操作,我看到他们将 userpassword 放在另一个名为 authData 的元素中,如下所示:

<authData id="auth1" user="MyUser" password="MyPassword"/>

我不知道将用户名和密码从 dataSource 元素移动到 authData 元素有什么好处。在这两种情况下,密码都以纯文本形式显示在 server.xml 文件中。

WebSphere Liberty 使用一个适配器来管理它的数据库连接。通过指定身份验证别名,适配器使用的密码将被加密。如果您不使用 auth 别名,则用户 ID 和密码将在不加密的情况下存储在适配器属性上。

此外,别名提供了另一层抽象,因为别名本身就是一种资源。这里的好处是,如果需要更改数据库user/password并且配置了很多数据源,可以独立配置别名,它们都可以指向相同的授权数据。

使用 wlp/bin 目录中的 securityUtility encode 命令对 server.xml 中的密码进行编码。

如果您通过 WebSphere Developer Tools (WDT) 添加身份验证数据,则在设置密码时会提示您对其进行编码 (xor)/加密 (aes)。它将保存在 server.xml 中,例如:

<authData user="user" password="{xor}Lz4sLCgwLTs="></authData>