以编程方式从 server.xml 中读取解密值
programmatically read a decrypted value from server.xml
我有一个 Websphere Liberty 服务器 server.xml
:
<managedThreadFactory jndiName="concurrent/threadFactory" maxPriority="5" />
<openidConnectClient id="AppID"
inboundPropagation="required"
clientId="${APPID_CLIENT_ID}"
clientSecret="${APPID_CLIENT_SECRET}"
authorizationEndpointUrl="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}/authorization"
tokenEndpointUrl="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}/token"
jwkEndpointUrl="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}/publickeys"
issuerIdentifier="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}"
tokenEndpointAuthMethod="basic"
signatureAlgorithm="none"
trustAliasName="${APPID_HOST}"
trustStoreRef="appidtruststore"
audiences="${APPID_CLIENT_ID}" />
是否可以从 Java 应用程序代码中以编程方式读取 clientSecret="${APPID_CLIENT_SECRET}"
的解密值?
这取决于值的编码方式。如果是加密的,根据定义是没有办法轻易解密的(否则会破坏加密的目的)。
如果您只是进行可逆编码(例如 XOR 或 AES),您可以使用 Liberty 功能对其进行解密。
首先,请确保您在 server.xml 中启用了以下功能:
<feature>passwordUtilities-1.0</feature>
然后,您可以使用 com.ibm.websphere.crypto.PasswordUtil
API 将其解码为这样的值:
String rawValue = // get from System properties or env var
String decodedValue = PasswordUtil.decode(rawValue);
我有一个 Websphere Liberty 服务器 server.xml
:
<managedThreadFactory jndiName="concurrent/threadFactory" maxPriority="5" />
<openidConnectClient id="AppID"
inboundPropagation="required"
clientId="${APPID_CLIENT_ID}"
clientSecret="${APPID_CLIENT_SECRET}"
authorizationEndpointUrl="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}/authorization"
tokenEndpointUrl="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}/token"
jwkEndpointUrl="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}/publickeys"
issuerIdentifier="https://${APPID_HOST}/oauth/v4/${APPID_TENANT_ID}"
tokenEndpointAuthMethod="basic"
signatureAlgorithm="none"
trustAliasName="${APPID_HOST}"
trustStoreRef="appidtruststore"
audiences="${APPID_CLIENT_ID}" />
是否可以从 Java 应用程序代码中以编程方式读取 clientSecret="${APPID_CLIENT_SECRET}"
的解密值?
这取决于值的编码方式。如果是加密的,根据定义是没有办法轻易解密的(否则会破坏加密的目的)。
如果您只是进行可逆编码(例如 XOR 或 AES),您可以使用 Liberty 功能对其进行解密。
首先,请确保您在 server.xml 中启用了以下功能:
<feature>passwordUtilities-1.0</feature>
然后,您可以使用 com.ibm.websphere.crypto.PasswordUtil
API 将其解码为这样的值:
String rawValue = // get from System properties or env var
String decodedValue = PasswordUtil.decode(rawValue);