Утомительно требует, чтобы я указал имя пользователя / пароль для проверки подлинности Windows, даже если я нахожусь в том же домене. В этом сценарии с ADO.NET мне не нужно указывать имя пользователя / пароль. Я предполагаю, что драйвер получает токен Kerberos из хранилища учетных данных.
Эта возможность сейчас недоступна в Tedious? Или есть какая-то конфигурация, которая заставит аутентификацию Windows работать без необходимости указывать имя пользователя / пароль?
@arobson @arthurschreiber - Мысли, пожалуйста.
Я исследовал это кое-что. До сих пор я узнал, что поддержка встроенной проверки подлинности Windows использует SSPI, а NodeJS в настоящее время не поддерживает SSPI. Существует пакет npm node-sspi, но он поддерживает только серверную часть. Также это работает только для HTTP-сервера. Это нативная реализация с привязкой к JavaScript. Реализация SSPI на стороне клиента также должна быть собственным кодом с привязками JavaScript.
Мое предложение состоит в том, чтобы создать поддержку SSPI на стороне клиента в новом пакете npm с API, который подходит для использования Tedious, и сделать Tedious зависимым от пакета для SQL Server Windows Integrated Auth.
Буду признателен за любые мысли. Спасибо.
Ага, звучит разумно. Я не думаю, что двоичный модуль должен быть частью утомительного, так что я хотел бы иметь его как отдельный модуль npm.
Прохладный. Первая версия, скорее всего, будет поддерживать только Windows. У нас все в порядке с функцией только Windows для начала?
Windows и Linux имеют разные API для поддержки встроенной проверки подлинности Windows. Мы должны иметь возможность объединить поддержку обеих платформ в один пакет. Но интересно, есть ли прецедент зависимости от разных пакетов для Windows и Linux.
Прохладный. Первая версия, скорее всего, будет поддерживать только Windows. У нас все в порядке с функцией только Windows для начала?
Да, это нормально. Я предполагаю, что это будет дополнительная функция, поэтому только поддержка Windows на первых порах подойдет. 👍
Я делюсь коротким фрагментом, используя интерфейс класса ClientSspi, который я имел в виду. Пожалуйста, поделитесь любыми отзывами о форме API.
ClientSspi = require('ClientSspi');
serverName = 'servername.example.com';
// Server name should be the only configuration. Windows SSPI APIs will get
// the tokens to be presented to the server to authenticate the logged in user.
clientSspi = new ClientSspi(serverName);
// authprotocol parameter can take three values.
// Negotiate, Kerberos, Ntlm
// Negotiate: With this option client will negotiate with the server
// on security protocol using SPNEGO.
//
// If nothing is specified, the first supported protocol will be used. The
// protocols will be attempted in the sequence listed above.
clientSspi.initialize(authprotocol, function(errorCode, errorString) {
if (errorCode || errorString) {
throw('SSPI intialization failed: ', errorCode, ': ', errorString);
}
var sspiServerResponse = new Uint8Array([]);
var sspiDone = false;
while (!sspiDone) {
// This call gets the next set of bytes to send to the server as part of the
// SSPI dance.
clientSspi.getNextSspiBlob(sspiServerResponse, function (sspiClientResponse, isDone, errorCode, errorString) {
if (errorCode || errorString) {
throw('SSPI intialization failed: ', errorCode, ': ', errorString);
}
sspiDone = isDone;
// This function will send the sspiClientResponse to the server and invokes the
// callback when the response from the server becomes available.
SendSspiBlobToSqlServerAndGetResponse(sspiClientResponse, function (serverResponse, errorString) {
if (errorString) {
throw(errorString);
}
sspiServerResponse = serverResponse;
});
});
}
});
У меня есть заглушка для реализации API по адресу https://github.com/tvrprasad/sspi-client.
@arthurschreiber Пожалуйста, сделайте быстрый пас, когда у вас будет возможность. Присылайте мне любые отзывы или открытые вопросы по репозиторию. Как только я заполню реализацию, я планирую использовать ее для реализации встроенной проверки подлинности Windows в Tedious.
Я собрал кое-что вместе, чтобы интегрировать sspi-client в утомительную работу и посмотреть, работает ли он и работает! Мне удалось подключиться с помощью ntlm, kerberos и согласовать пакеты безопасности без указания пароля!
@arthurschreiber вы можете найти здесь взлом. Это ни в коем случае не готово для PR, но дайте мне знать, если вы заметите проблемы на высоком уровне.
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft
Повторное открытие этой проблемы для отслеживания встроенной аутентификации Windows до тех пор, пока она не станет подключаемой, более подробно см. Https://github.com/tediousjs/tedious/commit/f5a2260f.
@ v-suhame, что нового в этом? Вы просто ждете на №624?
Могу ли я чем-нибудь помочь ему сдвинуться с мертвой точки?
@kevinkuszyk Спасибо за предложение помочь 😃 Зацикливаюсь на @arthurschreiber, чтобы получить последнее обновление.
Доступна ли теперь встроенная проверка подлинности Windows на сервере Linux?
@ sxpati2 Встроенная проверка подлинности Windows, как следует из названия, предназначена для ОС Windows. Для Linux это будет Kerberos Integrated auth. Tedious в настоящее время не поддерживает встроенную аутентификацию Windows или Kerberos, это в наших планах на будущее.
Я просто хочу это проверить. Похоже, произошел серьезный рефакторинг. Есть ли способ сделать msnodesqlv8 утомительным? Я думал, что msnodesqlv8 просто перейдет в сиквелиз, но этого не произошло.
@arthurschreiber Похоже, что была объединена встроенная проверка подлинности Windows PR # 497, которая позволяет проверять подлинность окна без необходимости имени пользователя и пароля, но я не могу найти это больше в последней утомительной версии. Просто интересно, что случилось с этой функцией?
Ситуация изменилась с тех пор? Или эта функция была временно потеряна при рефакторинге?
Ситуация изменилась с тех пор? Или эта функция была временно потеряна при рефакторинге?
Я тоже хотел бы знать!
Привет, что за слово с этой функцией? Благодарность!
Самый полезный комментарий
Я собрал кое-что вместе, чтобы интегрировать sspi-client в утомительную работу и посмотреть, работает ли он и работает! Мне удалось подключиться с помощью ntlm, kerberos и согласовать пакеты безопасности без указания пароля!
@arthurschreiber вы можете найти здесь взлом. Это ни в коем случае не готово для PR, но дайте мне знать, если вы заметите проблемы на высоком уровне.
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft