【参考】以下と同様のことをデータソースで実行しています。
検証環境
前提
Testing database connections in Open Liberty apps with REST APIs - OpenLiberty.ioに記載の設定をします。
この環境ではfeatureManagerに以下を追加します。
$ vi /opt/ibm/wlp/usr/servers/defaultServer/server.xml
<featureManager>
<feature>appSecurity-2.0</feature>
<feature>restConnector-2.0</feature>
</featureManager>
実行結果
% curl --insecure -u wsadmin:passw0rd "https://<hostname>:9443/ibm/api/validation/dataSource/PdprofDataSource" |jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 391 100 391 0 0 378 0 0:00:01 0:00:01 --:--:-- 378
{
"uid": "PdprofDataSource",
"id": "PdprofDataSource",
"jndiName": "jdbc/derbyEmbedded",
"successful": true,
"info": {
"databaseProductName": "DB2/LINUXX8664",
"databaseProductVersion": "SQL110580",
"jdbcDriverName": "IBM Data Server Driver for JDBC and SQLJ",
"jdbcDriverVersion": "4.32.28",
"schema": "DB2INST1",
"user": "db2inst1"
}
}
server.xmlで、dataSourceのdb2jcc.propertiesから認証の設定を削除して、authDataを使用するように変更した場合
<dataSource id="PdprofDataSource" jdbcDriverRef="Db2Driver" jndiName="jdbc/derbyEmbedded" type="javax.sql.DataSource" containerAuthDataRef="DBAuth">
<connectionManager maxPoolSize="5" minPoolSize="2"/>
<properties.db2.jcc databaseName="PDPROF"
serverName="<hostname> portNumber="50000"
autoCommit="FALSE" traceLevel="-1"/>
</dataSource>
<authData id="DBAuth" user="db2inst1" password="passw0rd" />
auth=container&authAlias=DBAuth をつけて実行します
% curl --insecure -u wsadmin:passw0rd "https://<hostname>:9443/ibm/api/validation/dataSource/PdprofDataSource?auth=container&authAlias=DBAuth" |jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 391 100 391 0 0 512 0 --:--:-- --:--:-- --:--:-- 512
{
"uid": "PdprofDataSource",
"id": "PdprofDataSource",
"jndiName": "jdbc/derbyEmbedded",
"successful": true,
"info": {
"databaseProductName": "DB2/LINUXX8664",
"databaseProductVersion": "SQL110580",
"jdbcDriverName": "IBM Data Server Driver for JDBC and SQLJ",
"jdbcDriverVersion": "4.32.28",
"schema": "DB2INST1",
"user": "db2inst1"
}
}
失敗例。db2jcc.propertiesに誤ったパスワードを設定すると、以下のようになります
% curl --insecure -u wsadmin:passw0rd "https://<hostname>:9443/ibm/api/validation/dataSource/PdprofDataSource" |jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7172 100 7172 0 0 9669 0 --:--:-- --:--:-- --:--:-- 9665
{
"uid": "PdprofDataSource",
"id": "PdprofDataSource",
"jndiName": "jdbc/derbyEmbedded",
"successful": false,
"failure": {
"sqlState": "28000",
"errorCode": "-4214",
"class": "java.sql.SQLInvalidAuthorizationSpecException",
"message": "[jcc][t4][2013][11249][4.32.28] Connection authorization failure occurred. Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000 DSRA0010E: SQL State = 28000, Error Code = -4,214",
"stack": [
"com.ibm.db2.jcc.am.b7.a(b7.java:808)",
"com.ibm.db2.jcc.am.b7.a(b7.java:66)",
"com.ibm.db2.jcc.am.b7.a(b7.java:133)",
"com.ibm.db2.jcc.t4.b.f(b.java:2683)",
"com.ibm.db2.jcc.t4.b.b(b.java:2011)",
"com.ibm.db2.jcc.t4.z.r(z.java:961)",
"com.ibm.db2.jcc.t4.z.k(z.java:494)",
"com.ibm.db2.jcc.t4.z.c(z.java:144)",
"com.ibm.db2.jcc.t4.b.k(b.java:1520)",
"com.ibm.db2.jcc.t4.b.b(b.java:1433)",
"com.ibm.db2.jcc.t4.b.a(b.java:6862)",
"com.ibm.db2.jcc.t4.b.b(b.java:949)",
"com.ibm.db2.jcc.t4.b.a(b.java:862)",
"com.ibm.db2.jcc.t4.b.a(b.java:457)",
"com.ibm.db2.jcc.t4.b.a(b.java:430)",
"com.ibm.db2.jcc.t4.b.<init>(b.java:368)",
"com.ibm.db2.jcc.DB2DataSource.getSimpleConnection(DB2DataSource.java:139)",
"com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:116)",
"com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:91)",
"com.ibm.ws.rsadapter.impl.DatabaseHelper.getConnectionFromDatasource(DatabaseHelper.java:1467)",
"com.ibm.ws.rsadapter.impl.DB2JCCHelper.getConnectionFromDatasource(DB2JCCHelper.java:638)",
"com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl$7.run(WSManagedConnectionFactoryImpl.java:1032)",
"com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl$7.run(WSManagedConnectionFactoryImpl.java:1019)",
"java.base/java.security.AccessController.doPrivileged(AccessController.java:785)",
"java.base/java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:841)",
"com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.getConnectionUsingDS(WSManagedConnectionFactoryImpl.java:1019)",
"com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.getConnection(WSManagedConnectionFactoryImpl.java:848)",
"com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:698)",
"com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1389)",
"com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1263)",
"com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:1471)",
"com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:576)",
"com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:308)",
"com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:143)",
"com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:117)",
"com.ibm.ws.rest.handler.validator.jdbc.DataSourceValidator.validate(DataSourceValidator.java:91)",
"com.ibm.ws.rest.handler.validator.internal.ValidatorRESTHandler.handleSingleInstance(ValidatorRESTHandler.java:283)",
"com.ibm.wsspi.rest.config.ConfigBasedRESTHandler.handleRequest(ConfigBasedRESTHandler.java:326)",
"com.ibm.ws.rest.handler.validator.internal.ValidatorRESTHandler.handleRequest(ValidatorRESTHandler.java:483)",
"com.ibm.ws.rest.handler.internal.service.RESTHandlerContainerImpl.handleRequest(RESTHandlerContainerImpl.java:465)",
"com.ibm.ws.rest.handler.internal.servlet.RESTProxyServlet.handleWithDelegate(RESTProxyServlet.java:121)",
"com.ibm.ws.rest.handler.internal.servlet.RESTProxyServlet.service(RESTProxyServlet.java:66)",
"javax.servlet.http.HttpServlet.service(HttpServlet.java:791)",
"com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1266)",
"com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:754)",
"com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:451)",
"com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:197)",
"com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:100)",
"com.ibm.ws.app.manager.wab.internal.OsgiDirectoryProtectionFilter.doFilter(OsgiDirectoryProtectionFilter.java:92)",
"com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:199)",
"com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)",
"com.ibm.ws.security.jaspi.JaspiServletFilter.doFilter(JaspiServletFilter.java:58)",
"com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:199)",
"com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)",
"com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1069)",
"com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1260)",
"com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1078)",
"com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:77)",
"com.ibm.ws.webcontainer40.servlet.CacheServletWrapper40.handleRequest(CacheServletWrapper40.java:87)",
"com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:978)",
"com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:293)",
"com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1284)",
"com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:500)",
"com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:459)",
"com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:569)",
"com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:503)",
"com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:363)",
"com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:330)",
"com.ibm.ws.http.channel.h2internal.H2StreamProcessor$Http2Ready.run(H2StreamProcessor.java:1849)",
"com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:298)",
"java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)",
"java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)",
"java.base/java.lang.Thread.run(Thread.java:835)"
]
}
}