java密码登陆错误_ORA-01017:用户名/密码无效;使用wss4j时登录被拒绝

我有很多测试可以毫无问题地访问我们的Oracle数据库,但是当我在使用密钥库的代码库中运行这些测试以及其他测试时,与数据库交互的测试不再能够连接 . 以下是他们获得的例外情况:

引起:java.sql.SQLException:ORA-01017:用户名/密码无效;登录在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)的oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)处于oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java) :381)oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun . java:436)oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate .java:752)oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:359)at oracle.jdbc.driver.PhysicalConnection . (PhysicalConnection.java:531)at oracle.jdbc.driver.T4CConnection . (T4CConnection . java:221)oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)at org.apache.com上的oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503) mons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)位于org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java: 877)在org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)... 68更多

显然用户名和密码仍然正确 . 我很难搞清楚我们的代码中导致连接失败的原因,而且我真的不知道如何调试Oracle驱动程序尝试连接时发生的情况 . 我在Oracle 11g中使用Oracle瘦驱动程序 . 我们使用Spring,Hibernate和Apache Commons DBCP . 似乎驱动程序可能正在尝试与数据库 Build SSL连接?我不确定 . 我似乎还记得当我们使用它时,SQL Server的一个非常类似的问题,当时我只是忽略了它 . 现在,我们在单独的批处理和JVM中运行与密钥库交互的测试 .

任何帮助将不胜感激 .

UPDATED

我做了一些调试,最后通过Spring-WS跟踪我们对wss4j库(版本1.5.9)的使用 . 最终,WSSConfig类获取了一组执行此操作的代码:

int ret = 0;

for (int i = 0; i < provs.length; i++) {

if ("SUN".equals(provs[i].getName())

|| "IBMJCE".equals(provs[i].getName())) {

ret =

java.security.Security.insertProviderAt(

(java.security.Provider) c.newInstance(), i + 2

);

break;

}

}

在此代码之后,我与Oracle的连接立即停止工作 . 看起来当使用充气城堡提供程序调用insertProviderAt方法时,我的Oracle连接开始失败 . 有任何想法吗?

Minimal Test Case

第一次连接尝试成功,但第二次尝试失败 .

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@server/servicename", "username", "password");

conn.prepareStatement("select * from dual").getResultSet();

conn.close();

org.apache.ws.security.WSSConfig.getDefaultWSConfig();

conn = DriverManager.getConnection("jdbc:oracle:thin:server/servicename", "username", "password");

conn.prepareStatement("select * from dual").getResultSet();

conn.close();

WSSConfig Initialize Method

private synchronized void

staticInit() {

if (!staticallyInitialized) {

org.apache.xml.security.Init.init();

if (addJceProviders) {

/*

* The last provider added has precedence, that is if JuiCE can be added

* then WSS4J uses this provider.

*/

addJceProvider("BC", "org.bouncycastle.jce.provider.BouncyCastleProvider");

addJceProvider("JuiCE", "org.apache.security.juice.provider.JuiCEProviderOpenSSL");

}

Transform.init();

try {

Transform.register(

STRTransform.implementedTransformURI,

"org.apache.ws.security.transform.STRTransform"

);

} catch (Exception ex) {

if (log.isDebugEnabled()) {

log.debug(ex.getMessage(), ex);

}

}

staticallyInitialized = true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle 12c是一种强大的数据库管理系统,它可以让用户轻松地管理和维护数据库。然而,有候会出现ORA-01017错误,提示“用户名/口令无效; 登录拒绝”。 这个错误通常是由于登录信息(用户名和口令)无效导致的。这可能是因为输入的用户名或口令不正确,或者由于数据库管理员更改了登录凭据而导致登录失败。解决这个问题的方法是正确输入用户名和口令,或者联系数据库管理员以获取正确的凭据。 此外,还有一些其他可能导致ORA-01017错误的原因。例如,数据库可以配置为只允许连接来自某些IP地址或主机名的客户端。如果您没有在连接字符串中正确指定这些参数,则可能无法连接到数据库并出现此错误。解决办法是检查连接字符串并指定正确的参数。 总之,ORA-01017错误可能是由多种原因导致的,但通常可以通过检查登录凭据和连接字符串来解决问题。如果您无法解决问题,请联系数据库管理员以获取帮助。 ### 回答2: ORA-01017Oracle数据库发生登录错误错误代码,错误信息为用户名/口令无效登录拒绝。通常,这种错误是由以下情况引起的。 首先,可能是由于输入的用户名密码不正确,导致登录失败。在此情况下,应该仔细检查输入的用户名密码是否正确,对大小写敏感,确保输入正确。 其次,可能是Oracle数据库中没有该用户的登录权限,或者没有分配合适的角色和权限。在这种情况下,应该检查该用户是否被授权访问数据库,并确保正确的角色和权限分配。 最后,这种错误可能是因为数据库配置问题,比如说数据库实例或服务没有启动。在这种情况下,应该检查数据库是否正常运行,确保数据库实例或服务已经正确启动。 综上所述,ORA-01017错误通常是由于输入错误用户名密码、没有登录权限或数据库未正常运行等问题引起的。对于这种错误,我们需要检查输入的用户名密码是否正确、该用户是否被授权访问数据库、数据库是否正常运行等,以确定解决方法。 ### 回答3: “oracle 12c ora-01017: 用户名/口令无效; 登录拒绝。”这个错误提示意味着用户输入的账号或者密码不正确,导致登录拒绝。当出现这种错误,需要首先检查输入的用户名和口令是否匹配,并且注意大小写是否正确。 在检查账号和密码之后,还需要确保数据库实例已经启动,并且监听器也已经启动。如果数据库实例或者监听程序未启动,会出现无法连接到数据库的情况。因此,需要确保相应的服务都已经启动。 此外,如果用户尝试连接到一个不存在的数据库或者使用错误的连接字符串,也有可能导致登录拒绝。需要检查连接字符串是否正确,并且确保数据库实例名称和监听器名称也正确。 如果以上步骤都已经检查过,并且仍然无法登录,那么可能是由于权限问题或者安全策略导致的。需要检查用户是否具有正确的权限,并且确保数据库的安全策略不会阻止该用户的登录。 总之,当出现“oracle 12c ora-01017: 用户名/口令无效; 登录拒绝错误提示,需要逐步排查以上问题,以确定错误原因并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值