У меня есть веб-приложение Spring в службе приложений Azure, которое подключается к базе данных SQL Azure с помощью драйвера Microsoft JDBC, аутентифицирующегося с помощью токена доступа. Первоначально он работает найти, но через некоторое время я начинаю получать SQLServerException: Ошибка входа для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'
Я следую инструкциям, изложенным в MS документах .
AuthenticationContext context = new AuthenticationContext(mySTSUrl, false, Executors.newFixedThreadPool(1));
ClientCredential cred = new ClientCredential(myClientId, myClientSecret);
Future<AuthenticationResult> future = context.acquireToken("https://database.windows.net/", cred, null);
String accessToken = future.get().getAccessToken();
// Connect with the access token.
ds = new SQLServerDataSource();
ds.setServerName(myServer); // Replace with your server name.
ds.setDatabaseName(myDB); // Replace with your database name.
ds.setEncrypt(true);
ds.setAccessToken(accessToken);
ds.setHostNameInCertificate("*.database.windows.net");
ds.setTrustServerCertificate(false);
ds.setLoginTimeout(30);
Это все работает какое-то время (без точного времени или триггера), а затем начинает работать с:
Причина:
com.microsoft.sqlserver.jdbc.SQLServerException: сбой входа для пользователя
«NT AUTHORITY \ ANONYMOUS LOGON».
ClientConnectionId: соединение установлено в
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError (SQLServerException.java:259)
в
com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF (tdsparser.java:256)
на com.microsoft.sqlserver.jdbc.TDSParser.parse (tdsparser.java:108)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon (SQLServerConnection.java:4548)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.logon (SQLServerConnection.java:3409)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.access $ 100 (SQLServerConnection.java:85)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection $ LogonCommand.doExecute (SQLServerConnection.java:3373)
в
com.microsoft.sqlserver.jdbc.TDSCommand.execute (IOBuffer.java:7344)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand (SQLServerConnection.java:2713)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper (SQLServerConnection.java:2261)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.login (SQLServerConnection.java:1921)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal (SQLServerConnection.java:1762)
в
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect (SQLServerConnection.java:1077)
в
com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnectionInternal (SQLServerDataSource.java:1031)
в
com.microsoft.sqlserver.jdbc.SQLServerDataSource.getConnection (SQLServerDataSource.java:69)
в
org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection (DatasourceConnectionProviderImpl.java:122)
в
org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection (NonContextualJdbcConnectionAccess.java:35)
в
org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded (LogicalConnectionManagedImpl.java:106)