【发布时间】:2019-12-10 12:09:25
【问题描述】:
我正在使用适用于 Azure 的 Linux Web 应用程序和 SQL Azure 数据库。
我可以在META-INF/context.xml 中保存我的 SQL Azure 数据库密码(为了论证,我们假设它是pass123),这很成功
<Context>
<Resource name="jdbc/myDB" type="javax.sql.DataSource" auth="Container"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" initialSize="30"
maxActive="100" validationQuery="SELECT 1"
validationQueryTimeout="1000"
testOnBorrow="true"
url="jdbc:sqlserver://exampleserver.database.windows.net:1433;database=exampledb;encrypt=true;hostNameInCertificate=westeurope1-a.control.database.windows.net;
loginTimeout=10;user=myuser;
password=pass123"
/>
</Context>
但是,我希望密码被加密,而不是以明文形式存储在 context.xml 文件中。所以我做了以下 - 基于https://docs.microsoft.com/en-us/azure/app-service/containers/configure-language-java#data-sources:
我添加了两个 Web App/Configuration/Application Settings
CATALINA_OPTS 和 THEDBPASSWORD
我将CATALINA_OPTS 设置为"$CATALINA_OPTS -Ddbpassword={THEDBPASSWORD}"
我将THEDBPASSWORD设置为用户的密码
然后我将context.xml 更改为password={dbpassword} 而不是password=pass123
然后我在日志中收到以下错误(并且应用程序无法启动)
Error: Could not find or load main class "$CATALINA_OPTS -Ddbpassword=pass123" -Ddbpassword=pass123
有什么想法吗?
【问题讨论】: