【发布时间】:2022-11-05 01:38:24
【问题描述】:
我无法在远程连接到 azure sql db(在 Azure DevOps 上运行 docker)对用户进行身份验证。它在我的计算机上的 Katalon 本地运行或通过同一用户的 MSSMS 运行时没有问题。
这是我使用的关键字:
@Keyword
def connect() {
SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName('****-mssql.database.windows.net');
ds.setPortNumber(1433)
ds.setDatabaseName('*****');
ds.setUser('TEC*****');
ds.setPassword('******');
ds.setEncrypt(true);
ds.setTrustServerCertificate(false);
ds.setHostNameInCertificate('*.database.windows.net');
ds.setLoginTimeout(30)
ds.setAuthentication('ActiveDirectoryPassword');
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
} catch (ClassNotFoundException e) {
e.printStackTrace()
return
}
try {
connection = ds.getConnection()
} catch (Exception e) {
e.printStackTrace()
return
}
if (connection != null) {
} else {
println("Failed to make connection!")
}
return connection
}
Docker 运行是 Azure DevOps 管道上 yml 中的标准 katalon docker 映像调用。 在我能够使用 sql server 身份验证方法对此 sql db 进行身份验证和执行测试之前。不幸的是,我们不得不摆脱这一点,只能进行 AAD 身份验证。
这是我收到的错误:
2022-10-19T14:06:19.7727391Z com.microsoft.sqlserver.jdbc.SQLServerException: Failed to authenticate the user TEC****** in Active Directory (Authentication=ActiveDirectoryPassword).
2022-10-19T14:06:19.7729164Z at com.microsoft.sqlserver.jdbc.SQLServerADAL4JUtils.getSqlFedAuthToken(SQLServerADAL4JUtils.java:49)
2022-10-19T14:06:19.7731772Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.getFedAuthToken(SQLServerConnection.java:3609)
2022-10-19T14:06:19.7733140Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.onFedAuthInfo(SQLServerConnection.java:3580)
2022-10-19T14:06:19.7734324Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.processFedAuthInfo(SQLServerConnection.java:3548)
2022-10-19T14:06:19.7735580Z at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onFedAuthInfo(tdsparser.java:261)
2022-10-19T14:06:19.7736640Z at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:103)
2022-10-19T14:06:19.7737691Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4290)
2022-10-19T14:06:19.7738824Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3157)
2022-10-19T14:06:19.7739940Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:82)
2022-10-19T14:06:19.7741103Z at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3121)
2022-10-19T14:06:19.7742344Z at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
2022-10-19T14:06:19.7744999Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
2022-10-19T14:06:19.7747724Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2026)
2022-10-19T14:06:19.7750596Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687)
2022-10-19T14:06:19.7752937Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528)
2022-10-19T14:06:19.7754834Z at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866)
2022-10-19T14:06:19.7755846Z at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal(SQLServerDataSource.java:968)
2022-10-19T14:06:19.7756726Z at com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection(SQLServerDataSource.java:69)
2022-10-19T14:06:19.7757305Z at javax.sql.DataSource$getConnection.call(Unknown Source)
2022-10-19T14:06:19.7757863Z at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
2022-10-19T14:06:19.7758486Z at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
2022-10-19T14:06:19.7759217Z at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
【问题讨论】:
标签: sql-server jdbc azure-active-directory katalon-studio adal4j