Tedious: Для проверки подлинности Windows необходимо указать имя пользователя и пароль.

Созданный на 1 авг. 2016  ·  17Комментарии  ·  Источник: tediousjs/tedious

Утомительно требует, чтобы я указал имя пользователя / пароль для проверки подлинности Windows, даже если я нахожусь в том же домене. В этом сценарии с ADO.NET мне не нужно указывать имя пользователя / пароль. Я предполагаю, что драйвер получает токен Kerberos из хранилища учетных данных.

Эта возможность сейчас недоступна в Tedious? Или есть какая-то конфигурация, которая заставит аутентификацию Windows работать без необходимости указывать имя пользователя / пароль?

@arobson @arthurschreiber - Мысли, пожалуйста.

Follow up Response needed

Самый полезный комментарий

Я собрал кое-что вместе, чтобы интегрировать sspi-client в утомительную работу и посмотреть, работает ли он и работает! Мне удалось подключиться с помощью ntlm, kerberos и согласовать пакеты безопасности без указания пароля!

@arthurschreiber вы можете найти здесь взлом. Это ни в коем случае не готово для PR, но дайте мне знать, если вы заметите проблемы на высоком уровне.
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft

Все 17 Комментарий

Я исследовал это кое-что. До сих пор я узнал, что поддержка встроенной проверки подлинности 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, которая позволяет проверять подлинность окна без необходимости имени пользователя и пароля, но я не могу найти это больше в последней утомительной версии. Просто интересно, что случилось с этой функцией?

Ситуация изменилась с тех пор? Или эта функция была временно потеряна при рефакторинге?

Ситуация изменилась с тех пор? Или эта функция была временно потеряна при рефакторинге?

Я тоже хотел бы знать!

Привет, что за слово с этой функцией? Благодарность!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги