Tedious: Masalah Otentikasi Windows ke SQL 2014

Dibuat pada 13 Feb 2015  ·  28Komentar  ·  Sumber: tediousjs/tedious

Baru yang membosankan dan hanya mencoba menyelesaikan ini untuk mendapatkan koneksi auth windows ke SQL Server 2014-

Versi paket yang membosankan: 1.9.0
simpul versi 12

// konfigurasi konfigurasi
konfigurasi var = {
nama pengguna: "Pengguna",
kata sandi: "Pass Saya",
server: "Server Saya",
domain: "Domian Saya",
pilihan: {
basis data: "myDb"
},
debug: {
paket: benar,
data: benar,
muatan: benar,
tanda: benar,
log: benar
}
};

Saya telah memverifikasi bahwa saya dapat terhubung ke port 1433 saya, dan untuk pengujian ini adalah server SQL yang berjalan secara lokal.

Jejak Tumpukan:
D:\Development\Node\node-sql\index.js:25
melempar kesalahan;
^
ConnectionError: Login gagal.
Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan
Otentikasi Windows.
di Parser.
(D:\Development\Node\node-sql\node_modules\membosankan\lib\connection.js:447:37)
di Parser.emit (events.js:107:17)
di Parser.nextToken
(D:\Development\Node\node-sql\node_modules\tedious\lib\token\token-stream-parser.js:91:18)
di Parser.addBuffer
(D:\Development\Node\node-sql\node_modules\tedious\lib\token\token-stream-parser.js:68:17)
di Connection.sendDataToTokenStreamParser
(D:\Development\Node\node-sql\node_modules\membosankan\lib\connection.js:879:35)
di Connection.STATE.SENT_NTLM_RESPONSE.events.data
(D:\Development\Node\node-sql\node_modules\membosankan\lib\connection.js:226:23)
di Connection.dispatchEvent
(D:\Development\Node\node-sql\node_modules\membosankan\lib\connection.js:742:59)
di MessageIO.
(D:\Development\Node\node-sql\node_modules\membosankan\lib\connection.js:670:22)
di MessageIO.emit (events.js:107:17)
di MessageIO.eventData
(D:\Development\Node\node-sql\node_modules\membosankan\lib\message-io.js:56:12)

Setiap dorongan ke arah yang benar dihargai.

feature-request

Komentar yang paling membantu

@arthurschreiber @arobson OMG akhirnya berhasil!!! Terima kasih banyak atas dukungan Anda yang tepat waktu!!! Jadi inilah konfigurasi terakhir saya:

var config = {
    "userName": "user.name",
    "password": "password",
    "server": "servername",
    "domain": "DOMAIN_NAME_CAPITALIZED_AND_NOT_FQDM",
    "options": {
        "encrypt": false
    }
};

Saya menggunakan SQL Server 2008 R2 pada Mesin Virtual. Script berada di server yang sama yang menghosting database.

Akan sangat bagus jika Anda dapat menambahkan ini ke dokumentasi di suatu tempat

Semua 28 komentar

Sejauh yang saya tahu, perbaikan yang saya PR belum berhasil rilis. Pesan kesalahan yang Anda lihat sejalan dengan apa yang kami coba sambungkan ke server SQL kami pada AD dengan batasan keamanan tertentu. Pass pertama saya untuk menambahkan dukungan NTLM tidak memperhitungkan ini tetapi perilaku yang baru digabungkan seharusnya. Sudahkah Anda mencoba NPM menginstal lib ini dari cabang master?

Jadi saya menarik yang terbaru dari cabang master, dan mengompilasinya secara lokal karena npm sebenarnya meninggalkan folder lib - tetapi tetap tidak menyenangkan. Kompilasi ini dengan kopi 1.9 yang dikompilasi sedikit berbeda dari kopi 1.7 yang ada di npm.

Saya akan melanjutkan ini sebentar lagi - ada ide lain?

Saya bisa membuatnya bekerja dengan SQL Auth di Azure, tetapi masih tidak bisa membuatnya bekerja dengan windows Auth, - Saya mencoba dengan sumber saat ini yang memiliki perubahan bukan di npm, tapi itu masih tidak berfungsi tetapi bisa jadi karena kurangnya pengalaman saya dalam membuat skrip kopi -

menggunakan kopi versi 1.9 - menjalankan yang berikut ini terhadap sumbernya.
kopi --copile --output lib src dan kemudian letakkan lib yang dikompilasi di tempat di node_modules/membosankan tetapi masih tidak bisa -

Bisakah Anda mencoba rilis 1.10.0?

Saya mengalami masalah yang sama dengan versi terbaru yang membosankan. Saya telah memberikan nama workstation, tetapi masih mendapatkan yang sama "Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan otentikasi Windows."

Apakah ada sesuatu yang saya lewatkan terkait penyiapan domain yang memungkinkan saya mengautentikasi pengguna domain Windows dari komputer yang bukan bagian dari domain? Saya mencoba mengautentikasi pengguna domain dari instance Ubuntu 14.04 ke SQL Server 2014 di Windows 2012 R2 Server.

@arobson Dalam komentar lain Anda mengatakan bahwa Anda mengalami masalah yang sama dan setelah PR Anda digabungkan, Anda berhasil mengotentikasi dalam produksi. Apakah ada sesuatu yang harus Anda lakukan di luar yang membosankan?

Apakah Anda masih mengalami masalah ini dengan rilis terbaru yang membosankan?

@arthurschreiber Saya baru saja mencoba dan saya masih mengalami "Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan otentikasi Windows." pesan eror.

Tampaknya @arobson punya solusi, tetapi saya tidak dapat menemukannya di mana pun.

Bantuan apa pun tentang opsi apa yang harus saya gunakan untuk terhubung ke instance SQL 2014 kami dengan kredensial domain akan sangat dihargai.

Memiliki masalah ini juga. Saya dapat masuk dengan pengguna SQL, tetapi tidak dengan otorisasi Windows, sayangnya tim db saya tidak mengizinkan pengguna SQL permanen sehingga perlu menggunakan auth Windows. Ini adalah opsi konfigurasi saya:

konfigurasi var = {
server: 'SERVERNAME',
nama pengguna: pengguna',
kata sandi: 'kata sandi',
domain: 'FQDN.DOMAIN.COM'
,pilihan: {
debug: {
paket: benar,
data: benar,
muatan: benar,
tanda: palsu,
log: benar
},
basis data: 'DB_NAME'
}
};

Ini adalah kesalahan yang saya dapatkan:

{ [ConnectionError: Login gagal. Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan autentikasi Windows.]
nama: 'ConnectionError',
pesan: 'Login gagal. Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan autentikasi Windows.',
kode: 'ELOGIN' }
{ [RequestError: Permintaan hanya dapat dibuat dalam status Masuk, bukan status SentNTLMResponse]
nama: 'RequestError',
pesan: 'Permintaan hanya dapat dibuat dalam status Masuk, bukan status SentNTLMResponse',
kode: 'EINVALIDSTATE' }
{ [ConnectionError: Login gagal. Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan autentikasi Windows.]
nama: 'ConnectionError',
pesan: 'Login gagal. Login berasal dari domain yang tidak tepercaya dan tidak dapat digunakan dengan autentikasi Windows.',
kode: 'ELOGIN' }
{ [RequestError: Permintaan hanya dapat dibuat dalam status Masuk, bukan status SentNTLMResponse]
nama: 'RequestError',
pesan: 'Permintaan hanya dapat dibuat dalam status Masuk, bukan status SentNTLMResponse',
kode: 'EINVALIDSTATE' }

Apakah ada masalah dengan konfigurasi saya?

Tidak, saya rasa ini bukan masalah dengan konfigurasi Anda. Saya harus menginstal SQL Server 2014 di mesin saya dan melihat apa yang menyebabkan ini. Mungkin ada yang berubah dalam skema otentikasi dan kami belum mendukungnya.

Saya akan lihat apa yang dapat saya lakukan.

@jgornick @stefanTHD - berikut adalah beberapa kebiasaan yang saya perhatikan di lingkungan kita. NTLM telah bekerja untuk kami dari kotak Linux di luar AD terhadap 2012 dan 2014 bahkan dengan kebijakan yang sangat ketat yang mencegah fitur NTLM yang kurang aman.

1 - Jangan gunakan FQDN di properti domain. Jika "company.com", gunakan "COMPANY"
2 - Kapitalisasi tampaknya juga penting. Kami telah sukses dengan nama domain all-cap
3 - _Jangan_ gunakan nama pengguna yang memenuhi syarat (yaitu "[email protected]") cukup "namapengguna"

untuk diketahui

Dokumentasi NTLM sudah tua dan tidak disediakan oleh Microsoft. Saya harus melakukan banyak mencari-cari untuk bendera biner tertentu karena dokumen yang saya temukan tidak menjelaskan untuk apa beberapa dari mereka. PR pertama saya hanya berfungsi untuk NTLM melawan SQL Server di workstation untuk kami karena AD kami memiliki kebijakan yang menonaktifkan beberapa fitur NTLM.

Langkah selanjutnya

Jika 3 tips di atas tidak berhasil, akan sangat membantu jika Anda dapat menemukan entri login yang gagal melalui Even Viewer / SQL Logs. "Domain tidak tepercaya" sebenarnya adalah kesalahan umum yang disediakan MSFT untuk mempersulit penyerang mengetahui mengapa permintaan mereka ditolak. Anda bahkan dapat mencari kesalahan itu di Google dan menemukan lib OSS lain yang mencoba mendukung NTLM dengan mengeluh bahwa kesalahan itu menyesatkan.

Saya ingin membantu Anda menyelesaikan ini, Tedious itu hebat dan kontribusi terbaru @arthurschreiber telah membuatnya lebih baik.

Otentikasi NTLM dijelaskan dalam dokumentasi MS-NLMP dari Microsoft. Saya akan melihat apakah saya dapat menemukan waktu untuk membacanya dan membandingkannya dengan apa yang diterapkan sejauh ini di membosankan.

@arthurschreiber @arobson OMG akhirnya berhasil!!! Terima kasih banyak atas dukungan Anda yang tepat waktu!!! Jadi inilah konfigurasi terakhir saya:

var config = {
    "userName": "user.name",
    "password": "password",
    "server": "servername",
    "domain": "DOMAIN_NAME_CAPITALIZED_AND_NOT_FQDM",
    "options": {
        "encrypt": false
    }
};

Saya menggunakan SQL Server 2008 R2 pada Mesin Virtual. Script berada di server yang sama yang menghosting database.

Akan sangat bagus jika Anda dapat menambahkan ini ke dokumentasi di suatu tempat

Dingin! Fakta bahwa NTLM auth tidak berfungsi dengan enkripsi adalah bug dalam kode, dan saya akan segera memperbaikinya (Jika saya dapat menemukan waktu untuk itu).

Memang, memanfaatkan domain memang menyelesaikan masalah!

https://github.com/pekim/tedious/pull/367 Adalah perbaikan untuk auth NTLM yang tidak berfungsi dengan enkripsi.

Apakah diskusi ini mengacu pada penggunaan Otentikasi Windows dari Linux? Misalnya RedHat?

@pisees Ya, saya menghubungkan dari Fedora 22 ke SQL server menggunakan Windows Auth dengan enkripsi dengan perbaikan.

Saya memiliki masalah yang sama persis dengan @NamTThai , dan ini berfungsi sekarang setelah saya membaca ini dan mengubah domain seperti yang dijelaskan. (Semua Cap dan hanya bagian pertama dari domain, hilangkan bagian setelah titik)

Saya dengan Microsoft dan ingin membantu dengan beberapa kontribusi untuk membosankan.
Adakah yang masih belum terselesaikan dengan masalah ini atau apakah semuanya sudah teratasi?

@tvrprasad Saya pikir ada solusi, saya tidak yakin kita semua mengerti mengapa solusinya berhasil. :)

@benzou Apakah solusi yang dijelaskan oleh @arobson di utas ini pada 15/8?
Apa yang menghalangi masalah ini untuk ditutup? Mungkin saya bisa membantu menutup ini ... entah bagaimana :)

@tvrprasad Saya pikir kita perlu dokumentasi yang lebih baik tentang ini.

Kami memiliki dokumentasi kami yang disimpan di cabang gh-pages dari repo ini, tetapi karena dipertahankan di luar basis kode, itu menjadi usang dengan mudah dan pemeliharaannya menjadi hambatan. 😞.

@tvrprasad - masalah yang telah dilaporkan menjadi membosankan dan ke repo seriate kami sejak saya menambahkan dukungan NTLM, secara konsisten disebabkan oleh domain yang menjadi huruf kecil dan/atau sebagai FQDN. Salah satu solusi untuk ini mungkin menindaklanjuti dengan PR yang:

  1. mengonversi domain menjadi huruf besar (seharusnya saya melakukannya untuk memulai)
  2. membagi domain pada . dan hanya menggunakan segmen pertama

Saya jelas bukan ahli NTLM tetapi kami adalah penggemar MSSQL dan Node dan sangat membutuhkan ini, jadi saya mempelajari dokumentasi NTLM dan implementasi lain untuk menerapkannya dengan bantuan dari tim operasi kami untuk menguji sejumlah SQL Server versi sehingga kami bisa relatif yakin tentang implementasinya. Analisis dan peningkatan apa pun yang dapat Anda berikan atas apa yang ada akan luar biasa. Tidak ada yang tahu apa yang mungkin saya lewatkan karena dokumentasi yang saya ikuti berasal dari tahun 2007

Beri tahu saya jika ada pertanyaan spesifik yang dapat saya jawab tentang bit NTLM.

@arobson - FDQN tampaknya berfungsi untuk saya, masih hanya huruf besar. Saya membuat masalah terpisah untuk mengonversi ke huruf besar agar pelacakan mudah - https://github.com/tediousjs/tedious/issues/414 . Saya akan menyusun PR untuk itu. Saya akan mencoba mempelajari mengapa huruf kecil tidak berfungsi.

@arthurschreiber - Saya akan mencoba membantu dengan memperbarui dokumentasi setelah saya dapat menyelesaikan setidaknya satu PR tentang topik ini, jadi saya memiliki pemahaman yang lebih baik. Jika ada area lain yang dokumentasinya kurang, beri tahu saya. Saya akan mencoba membantu.

Saya membuka beberapa masalah lain yang terkait dengan otentikasi. Saya akan menghargai pemikiran tentang itu.
https://github.com/tediousjs/tedious/issues/415
https://github.com/tediousjs/tedious/issues/416

Teman-teman - Saya memiliki PR untuk implementasi Otentikasi Terintegrasi Windows - https://github.com/tediousjs/tedious/pull/497 . Ini tidak memerlukan nama pengguna atau kata sandi dan menggunakan kredensial login pengguna.

Jika Anda dapat mencobanya dan memberikan umpan balik, saya akan sangat menghargainya. Saya berharap dapat bekerja sama dengan komunitas untuk mendapatkan fitur tersebut.

halo jika ada yang bisa membantu saya Saya telah mencoba untuk terhubung di database MS SQL Server 12 menggunakan mssql node 4.1, saya sudah mencoba banyak hal, tetapi tidak terhubung

koneksi saya telah sesuai di bawah ini:

x

Saya coba:

const stringConnect = 'Server = ADMIN-CCE\admin: 1433; Basis Data = GRD; ID pengguna = admin-cce \ admin; '
DATABASE.koneksi (stringConnect)
.lalu (sambung => {
global.sambungan = samb;
console.log ('terhubung ke GRD');
})
.catch (err => console.error ( connection error mssql $ {stringConnect} - $ {err} ));

module.exports = DATABASE;

* KESALAHAN PENGEMBALIAN **
kesalahan koneksi mssql Server = ADMIN-CCE\admin: 1433; Basis Data = GRD; ID pengguna = admin-cce \ admin; - ConnectionError: Port untuk admin: 1433 tidak ditemukan di ADMIN-CCE

sudah mencoba cara lain, juga tidak berhasil! Lihat:

konfigurasi var = {
server: "ADMIN-CCE\MSSQLSERVER",
basis data: "GRD",
pelabuhan: 1433,
pengguna: 'admin-cce\admin',
debug: benar,
pilihan: {
mengenkripsi: salah,
koneksi tepercaya: benar
}
};

DATABASE.connect (config, function (err) {
jika (kesalahan)
{
console.log (err)
}
lain
console.log ('terhubung .....')
});

module.exports = DATABASE;

* KESALAHAN PENGEMBALIAN *
pesan:
'Gagal terhubung ke ADMIN-CCE: tidak terdefinisi - Tidak dapat terhubung (urutan)',
kode: 'ESOCKET'},
nama: 'ConnectionError'}

Hai @allexon , membosankan belum mendukung Otentikasi Terintegrasi Windows, detailnya ada di https://github.com/tediousjs/tedious/issues/660.

apakah membosankan mendukung otentikasi SQL server windows?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat