【发布时间】:2016-10-06 00:21:28
【问题描述】:
我们已经在分布式架构中实现了 WSO2 API Manager (v1.10.0),如在线文档 here 中所述。
这包括以下内容(在 5 个单独的服务器上):
- 网关 (x2)
- 发布者和商店(在单个服务器上)
- 密钥管理器 (x2)
这些连接到 3 个普通的 API 管理器数据库(注册表、用户管理器和 API 管理器),它们位于 SQL Server 2014 实例上。
我们使用密钥管理器对网站用户进行身份验证(登录、忘记密码等),以及对 API 调用进行身份验证。
但是,当我尝试登录该站点时,我在密钥管理器上看到以下(违反 UNIQUE KEY 约束)错误:
TID:[-1] [] [2016-10-06 00:36:47,842] 错误 {org.wso2.carbon.identity.oauth2.dao.TokenPersistenceTask} - 错误 持久访问令牌时发生 :c5a0a11e63388dCHANGEDea34b0533445 {org.wso2.carbon.identity.oauth2.dao.TokenPersistenceTask} org.wso2.carbon.identity.oauth2.IdentityOAuth2Exception:错误时 存储消费者密钥的访问令牌: fpA6AhOfbVCHANGEDgH0WzBDOga 在 org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.storeAccessToken(TokenMgtDAO.java:246) 在 org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.persistAccessToken(TokenMgtDAO.java:284) 在 org.wso2.carbon.identity.oauth2.dao.TokenPersistenceTask.run(TokenPersistenceTask.java:52) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 引起: com.microsoft.sqlserver.jdbc.SQLServerException:违反 UNIQUE KEY 约束“CON_APP_KEY”。无法在对象中插入重复键 'dbo.IDN_OAUTH2_ACCESS_TOKEN'。重复键值为 (15, williams.j2@CHANGED.org.uk, -1234, , APPLICATION_USER,369db21a386ae4CHANGED0ff34d35708d,活动,无)。在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) 在 com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:332) 在 org.wso2.carbon.identity.oauth2.dao.TokenMgtDAO.storeAccessToken(TokenMgtDAO.java:224) ... 5 更多
这会导致网站上出现以下 .NET 错误:
我试过用谷歌搜索,但找不到最新的答案。
我没有将密钥管理器配置为拥有主节点和工作节点(如 here 所述),因为文档似乎表明不需要这样做。
任何帮助将不胜感激!
【问题讨论】:
标签: sql-server wso2 wso2-am