Конфигурирование источника данных CyberArk EPV в JNDI Tomcat - PullRequest
0 голосов
/ 01 октября 2018

Наше приложение работает с разными клиентами, используя либо встроенный источник данных JDBC (т. Е. Посредством имени пользователя / пароля / строки подключения), либо JNDI в случае, если крупные клиенты не хотят смешиваться с файлами свойств открытого текста.

Это контролируется Spring

<beans profile="JNDIDS">
    <jee:jndi-lookup id="dataSource" jndi-name="${database.jndi}" resource-ref="true" />
</beans>

Вышеуказанное успешно работает на Jboss, Websphere и Tomcat 8, когда я настраиваю источник данных в виде открытого текста.

От одного из наших клиентов требуется не использоватьнезашифрованные пароли в любом файле конфигурации, даже если Tomcat управляет server.xml ими, поэтому они интегрировали CyberArk EPV (Enterprise Password Vault).

Я следовал за ними, реализуя стандартную конфигурацию, но безуспешно

server.xml

<Resource name="DB-Global" auth="Container" type="oracle.jdbc.pool.OracleDataSource"
  driverClassName="oracle.jdbc.driver.OracleDriver" vendorFactoryClass="oracle.jdbc.pool.OracleDataSourceFactory" factory="com.cyberark.aim.v550.tomcat.ASCPDataSourceFactory" 
  url="(redacted)" userPropertyName="user" passwordPropertyName="password" maxActive="20" maxIdle="10" maxWait="-1" ascp.connectionPort="18923" ascp.appId="(redacted)" 
  ascp.query="(redacted)" ascp.connectionTimeOut="30" ascp.reason="To retrieve the password for appID (redacted)"/>

context.xml

<ResourceLink name="DB" global="DB-Global" type="oracle.jdbc.pool.OracleDataSource" />

JNDI базы данных равно java:/comp/env/DB

К сожалению, при запуске я получаю следующую ошибку

Caused by: javax.naming.NamingException: The local resource link [DB] that refers to global resource [DB-Global] was expected to return an instance of [oracle.jdbc.pool.OracleDataSource] but returned an instance of [com.cyberark.aim.v550.tomcat.ASCPDataSource]
    at org.apache.naming.NamingContext.lookup(NamingContext.java:864) ~[catalina.jar:8.0.47]
    at org.apache.naming.NamingContext.lookup(NamingContext.java:158) ~[catalina.jar:8.0.47]
    at org.apache.naming.NamingContext.lookup(NamingContext.java:835) ~[catalina.jar:8.0.47]
    at org.apache.naming.NamingContext.lookup(NamingContext.java:158) ~[catalina.jar:8.0.47]
    at org.apache.naming.NamingContext.lookup(NamingContext.java:835) ~[catalina.jar:8.0.47]
    at org.apache.naming.NamingContext.lookup(NamingContext.java:172) ~[catalina.jar:8.0.47]
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157) ~[catalina.jar:8.0.47]
    at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:1.8.0_141]
    at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:106) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:231) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:217) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    ... 27 more

Это последняя ошибка, которую мне прислал мой клиент. Я знаю , что в этой конфигурации есть потенциальная ошибка.На самом деле класс источника данных должен быть не OracleDataSource (несмотря на то, что у нас работает Oracle), а более общий javax.sql.DataSource.Это потому, что ACSP вероятно может обернуть источник данных Oracle в свой собственный источник данных.

Даже когда я просил применить javax.sql.DataSource везде, где это было OracleDataSource, я получаю такой же видошибка, на этот раз говоря, что com.cyberark.aim.v550.tomcat.ASCPDataSource нельзя назначить javax.sql.DataSource.

Вопрос: как мне настроить Cyberark EPV DataSource для работы в Tomcat 8.0?

...