【问题标题】:programmatically read a decrypted value from server.xml以编程方式从 server.xml 读取解密的值
【发布时间】:2020-02-01 18:28:31
【问题描述】:

我有一个带有以下server.xml 的 Websphere Liberty 服务器:

<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}" 的解密值?

【问题讨论】:

    标签: java websphere-liberty server.xml


    【解决方案1】:

    这取决于值的编码方式。如果它是加密的,根据定义,就无法轻松解密它(否则它会破坏加密的目的)。

    如果您只是进行可逆编码(例如 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多