Tedious: Die Windows-Authentifizierung erfordert die Angabe von Benutzername/Kennwort

Erstellt am 1. Aug. 2016  ·  17Kommentare  ·  Quelle: tediousjs/tedious

Mühsam erfordert es, dass ich Benutzername/Kennwort für die Windows-Authentifizierung angeben, obwohl ich mich in derselben Domäne befinde. Ich muss in diesem Szenario mit ADO.NET keinen Benutzernamen/Kennwort angeben. Ich gehe davon aus, dass der Treiber das Kerberos-Token aus dem Anmeldeinformationsspeicher erhält.

Ist diese Funktion derzeit bei Tedious nicht verfügbar? Oder gibt es eine Konfiguration, mit der die Windows-Authentifizierung funktioniert, ohne dass Benutzername/Kennwort angegeben werden muss?

@arobson @arthurschreiber - Gedanken bitte.

Follow up Response needed

Hilfreichster Kommentar

Ich habe mir etwas zusammengetan, um sspi-client zu mühsam zu integrieren und zu sehen, ob es funktioniert und es tut! Ich konnte mich mit ntlm, Kerberos verbinden und Sicherheitspakete aushandeln, ohne ein Passwort anzugeben!

@arthurschreiber den Hack findet ihr hier. Dies ist keineswegs PR-fähig, aber lassen Sie es mich wissen, wenn Sie Probleme auf hohem Niveau sehen.
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft

Alle 17 Kommentare

Ich habe das etwas untersucht. Was ich bisher gelernt habe, ist, dass die Unterstützung für die integrierte Windows-Authentifizierung SSPI verwendet und NodeJS derzeit SSPI nicht unterstützt. Es gibt ein node-sspi npm-Paket, das jedoch nur die Serverseite unterstützt. Es funktioniert auch nur für einen HTTP-Server. Es handelt sich um eine native Implementierung mit JavaScript-Bindung. Die clientseitige SSPI-Implementierung müsste ebenfalls nativer Code mit JavaScript-Bindungen sein.

Mein Vorschlag besteht darin, eine clientseitige SSPI-Unterstützung in einem neuen npm-Paket mit einer API zu erstellen, die für die Nutzung durch Tedious geeignet ist, und Tedious eine Abhängigkeit vom Paket für SQL Server Windows Integrated Auth übernehmen zu lassen.

Wäre dankbar für alle Gedanken. Vielen Dank.

Ja, das klingt vernünftig. Ich denke nicht, dass das Binärmodul langweilig sein sollte, also auf die Idee, es als separates npm-Modul zu haben.

Cool. First Cut wird wahrscheinlich nur Windows unterstützen. Sind wir mit einer reinen Windows-Funktion für den Anfang einverstanden?

Windows und Linux haben unterschiedliche APIs zur Unterstützung der integrierten Windows-Authentifizierung. Wir sollten in der Lage sein, die Unterstützung für beide Plattformen in einem Paket zu integrieren. Ich frage mich jedoch, ob es einen Präzedenzfall für Abhängigkeiten von verschiedenen Paketen für Windows vs. Linux gibt.

Cool. First Cut wird wahrscheinlich nur Windows unterstützen. Sind wir mit einer reinen Windows-Funktion für den Anfang einverstanden?

Ja das ist ok. Ich kann mir vorstellen, dass dies eine optionale Funktion sein wird, daher ist zunächst nur die Unterstützung von Windows in Ordnung. 👍

Ich teile ein kurzes Snippet mit der ClientSspi-Klassenschnittstelle, die ich im Sinn habe. Bitte teilen Sie uns Feedback zur Form der API mit.

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;
      });
    });
  }
});

Ich habe eine Stub-Implementierung der API unter https://github.com/tvrprasad/sspi-client.

@arthurschreiber Bitte mach bei

Ich habe mir etwas zusammengetan, um sspi-client zu mühsam zu integrieren und zu sehen, ob es funktioniert und es tut! Ich konnte mich mit ntlm, Kerberos verbinden und Sicherheitspakete aushandeln, ohne ein Passwort anzugeben!

@arthurschreiber den Hack findet ihr hier. Dies ist keineswegs PR-fähig, aber lassen Sie es mich wissen, wenn Sie Probleme auf hohem Niveau sehen.
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft

Erneutes Öffnen dieses Problems, um die integrierte Windows-Authentifizierung zu verfolgen, bis sie steckbar gemacht wird, mehr Details unter https://github.com/tediousjs/tedious/commit/f5a2260f.

@v-suhame was ist das neueste daran? Wartest du nur auf #624?

Gibt es etwas, was ich tun kann, um es in Bewegung zu bringen?

@kevinkuszyk Danke für das Hilfsangebot 😃 Looping in @arthurschreiber um das neueste Update zu bekommen.

Ist die Windows-integrierte Authentifizierung auf dem Linux-Server jetzt verfügbar?

@sxpati2 Die integrierte Windows-Authentifizierung ist, wie der Name schon geeignet . Für Linux wäre es Kerberos Integrated Auth. Tedious unterstützt derzeit keine integrierte Windows- oder Kerberos-Authentifizierung, dies ist in unserem zukünftigen Plan vorgesehen.

Ich möchte das einfach mal überprüfen. Es scheint, als hätte es eine große Umgestaltung gegeben. Gibt es eine Möglichkeit, dass ich msnodesqlv8 einfach in langweilig einschleifen kann? Ich dachte, msnodesqlv8 würde einfach in die Fortsetzung fallen, aber das tat es nicht.

@arthurschreiber Es sieht so aus, als ob die PR #497 Windows Integrated Authentication zusammengeführt wurde, die eine Fensterauthentifizierung ermöglicht, ohne dass Benutzername/Passwort erforderlich ist, aber ich kann das in der neuesten langweiligen Version anscheinend nicht mehr finden. Sie fragen sich nur, was mit dieser Funktion passiert ist?

Hat sich die Situation seitdem geändert? Oder ist diese Funktion beim Refactor vorübergehend verloren gegangen?

Hat sich die Situation seitdem geändert? Oder ist diese Funktion beim Refactor vorübergehend verloren gegangen?

würde ich auch gerne wissen!

Grüße, was ist das Wort mit dieser Funktion? Danke!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

tvrprasad picture tvrprasad  ·  6Kommentare

anthonylau picture anthonylau  ·  8Kommentare

SaloniSonpal picture SaloniSonpal  ·  5Kommentare

jstephens7 picture jstephens7  ·  5Kommentare

spacem picture spacem  ·  4Kommentare