Tedious: مشكلة مصادقة Windows لـ SQL 2014

تم إنشاؤها على ١٣ فبراير ٢٠١٥  ·  28تعليقات  ·  مصدر: tediousjs/tedious

جديد إلى ممل ويحاول فقط فرز هذا من الحصول على اتصال مصادقة Windows بـ SQL Server 2014-

إصدار الحزمة المملة: 1.9.0
نسخة العقدة 12

// التكوين الإعداد
فار التكوين = {
اسم المستخدم: "المستخدم" ،
كلمة المرور: "MyPass" ،
الخادم: "MyServer" ،
المجال: "MyDomian" ،
والخيارات: {
قاعدة البيانات: "myDb"
} ،
التصحيح: {
الحزمة: صحيح ،
البيانات: صحيح ،
الحمولة: صحيح ،
الرمز المميز: صحيح ،
سجل: صحيح
}
} ؛

لقد تحققت من أنني قادر على الاتصال بمنفذ 1433 الخاص بي ، ولاختبار هذا خادم SQL يعمل محليًا.

تتبع المكدس:
د: \ تطوير \ عقدة \ node-sql \ index.js: 25
رمي يخطئ
^
خطأ في الاتصال: فشل تسجيل الدخول.
تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع
مصادقة Windows.
في المحلل اللغوي.
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ connection.js: 447: 37)
في Parser.emit (events.js: 107: 17)
في Parser.nextToken
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ token \ token-stream-parser.js: 91: 18)
في Parser.addBuffer
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ token \ token-stream-parser.js: 68: 17)
في Connection.sendDataToTokenStreamParser
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ connection.js: 879: 35)
في Connection.STATE.SENT_NTLM_RESPONSE.events.data
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ connection.js: 226: 23)
في Connection.dispatchEvent
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ connection.js: 742: 59)
في MessageIO.
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ connection.js: 670: 22)
في MessageIO.emit (events.js: 107: 17)
في MessageIO.eventData
(D: \ Development \ Node \ node-sql \ node_modules \ tedious \ lib \ message-io.js: 56: 12)

نقدر أي دفعة في الاتجاه الصحيح.

feature-request

التعليق الأكثر فائدة

arthurschreiberarobson OMG يعمل أخيرًا !!! شكرًا جزيلاً لكم يا رفاق على دعمكم في الوقت المناسب !!! إذن هذا هو التكوين النهائي الخاص بي:

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

أنا أستخدم SQL Server 2008 R2 على جهاز ظاهري. البرنامج النصي موجود على نفس الخادم الذي يستضيف قاعدة البيانات.

سيكون من الرائع أن تتمكن من إضافة هذا إلى الوثائق في مكان ما

ال 28 كومينتر

بقدر ما أستطيع أن أقول ، فإن الإصلاحات التي لم أقم بإدخالها في إصدار حتى الآن. تتماشى رسالة الخطأ التي تراها مع ما حاولنا الاتصال بخوادم SQL الخاصة بنا على إعلان مع قيود أمان معينة مطبقة. لم يتم حساب هذا المرور لأول مرة في إضافة دعم NTLM ولكن يجب على السلوك المدمج حديثًا. هل جربت NPM تثبيت هذا lib من الفرع الرئيسي؟

لذلك قمت بسحب أحدث إصدار من الفرع الرئيسي ، وقمت بتجميعه محليًا منذ أن تركت npm مجلد lib بالفعل - ولكن لا يوجد حتى الآن متعة. قم بتجميع هذا باستخدام coffee 1.9 والذي تم تجميعه بشكل مختلف قليلاً عن القهوة 1.7 وهو ما هو موجود في npm.

سأستمر في هذا بعد قليل - هل من أفكار أخرى؟

تمكنت من الحصول على هذا العمل مع مصادقة SQL على Azure ، لكنني ما زلت غير قادر على تشغيل هذا مع windows Auth ، - لقد حاولت مع المصدر الحالي الذي يحتوي على تغييرات ليست في npm ، ولكن هذا لا يزال لا يعمل ولكن قد يكون ذلك بسبب قلة خبرتي في بناء نصوص القهوة -

باستخدام الإصدار 1.9 من القهوة - تم إجراء ما يلي مقابل المصدر.
coffee --copile - إخراج lib src ثم وضع libs المترجمة في مكانها في node_modules / مملة ولكن لا تزال غير موجودة -

هل يمكنك تجربة الإصدار 1.10.0؟

أواجه نفس المشكلة مع أحدث إصدار من برنامج مملة. لقد قدمت اسم محطة العمل ، لكنني ما زلت أحصل على نفس "تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع مصادقة Windows."

هل هناك شيء أفتقده فيما يتعلق بإعداد المجال يسمح لي بمصادقة مستخدم مجال Windows من جهاز كمبيوتر ليس جزءًا من المجال؟ أحاول مصادقة مستخدم مجال من مثيل Ubuntu 14.04 إلى SQL Server 2014 على Windows 2012 R2 Server.

arobson في تعليق آخر قلت إنك تواجه نفس المشكلة وبعد دمج العلاقات العامة الخاصة بك ، تمكنت من المصادقة بنجاح في الإنتاج. هل كان عليك القيام بشيء خارج عن الممل؟

هل ما زلت تواجه هذه المشكلة مع أحدث الإصدارات المملة؟

arthurschreiber لقد حاولت للتو وما زلت أواجه "تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع مصادقة Windows." رسالة خطأ.

يبدو أن arobson لديه حل ، لكن لا يمكنني العثور عليه في أي مكان.

أي مساعدة بشأن الخيارات التي يجب أن أستخدمها للاتصال بمثيل SQL 2014 الخاص بنا باستخدام بيانات اعتماد المجال سيكون موضع تقدير كبير.

وجود هذه القضية أيضا. أنا قادر على تسجيل الدخول باستخدام مستخدم SQL ، ولكن ليس بإذن من Windows ، وللأسف لن يسمح فريق db الخاص بي بمستخدم SQL دائم لذلك يحتاج إلى استخدام مصادقة Windows. هذه هي خيارات التكوين الخاصة بي:

فار التكوين = {
الخادم: "SERVERNAME" ،
اسم المستخدم: المستخدم '،
كلمة المرور: "كلمة المرور" ،
المجال: "FQDN.DOMAIN.COM"
،والخيارات: {
التصحيح: {
الحزمة: صحيح ،
البيانات: صحيح ،
الحمولة: صحيح ،
الرمز المميز: خطأ ،
سجل: صحيح
} ،
قاعدة البيانات: "DB_NAME"
}
} ؛

هذا هو الخطأ الذي أواجهه:

{[خطأ في الاتصال: فشل تسجيل الدخول. تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع مصادقة Windows.]
الاسم: "خطأ اتصال" ،
الرسالة: "فشل تسجيل الدخول. تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع مصادقة Windows. '،
الكود: "ELOGIN"}
{[RequestError: يمكن إجراء الطلبات فقط في حالة LoggedIn ، وليس حالة SentNTLMResponse]
الاسم: "RequestError" ،
الرسالة: "لا يمكن تقديم الطلبات إلا في حالة تسجيل الدخول ، وليس في حالة SentNTLMResponse" ،
الكود: "EINVALIDSTATE"}
{[خطأ في الاتصال: فشل تسجيل الدخول. تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع مصادقة Windows.]
الاسم: "خطأ اتصال" ،
الرسالة: "فشل تسجيل الدخول. تسجيل الدخول من مجال غير موثوق به ولا يمكن استخدامه مع مصادقة Windows. '،
الكود: "ELOGIN"}
{[RequestError: يمكن إجراء الطلبات فقط في حالة LoggedIn ، وليس حالة SentNTLMResponse]
الاسم: "RequestError" ،
الرسالة: "لا يمكن تقديم الطلبات إلا في حالة تسجيل الدخول ، وليس في حالة SentNTLMResponse" ،
الكود: "EINVALIDSTATE"}

هل هناك مشكلة في التكوين الخاص بي؟

لا ، لا أعتقد أنها مشكلة في التكوين الخاص بك. سأحتاج إلى تثبيت SQL Server 2014 على جهازي ومعرفة سبب ذلك. ربما تغير شيء ما في نظام المصادقة ونحن لا ندعم ذلك حتى الآن.

سوف اري ماذا يمكنني ان افعل.

jgornickstefanTHD - إليك بعض المراوغات التي لاحظتها في بيئاتنا . تعمل NTLM لصالحنا من صناديق Linux خارج AD مقابل 2012 و 2014 حتى مع وجود سياسات صارمة للغاية تمنع ميزات NTLM الأقل أمانًا.

1 - لا تستخدم FQDN في خاصية المجال. إذا كانت "company.com" ، فاستخدم "COMPANY"
2 - يبدو أن الرسملة مهمة أيضًا. لقد نجحنا في استخدام أسماء النطاقات ذات الأحرف الاستهلالية
3 - لا تستخدم اسم مستخدم مؤهل (مثل "[email protected]") فقط "user.name"

لمعلوماتك

وثائق NTLM قديمة ولم توفرها Microsoft. كان علي أن أقوم بالكثير من البحث عن أعلام ثنائية معينة لأن المستند الذي وجدته لم يشرح الغرض من بعضها. عملت العلاقات العامة الأولى الخاصة بي فقط مع NTLM مقابل SQL Server على محطات العمل بالنسبة لنا لأن إعلاننا كان لديه سياسة عطلت بعض ميزات NTLM.

الخطوات التالية

إذا لم تنجح النصائح الثلاثة المذكورة أعلاه ، فسيكون من المفيد جدًا العثور على إدخالات تسجيل الدخول الفاشلة عبر سجلات Even Viewer / SQL. "المجال غير الموثوق به" هو في الواقع خطأ عام تقدمه أداة MSFT لتجعل من الصعب على المهاجم معرفة سبب رفض طلبه. يمكنك حتى البحث في google عن هذا الخطأ والعثور على libs OSS الأخرى التي تحاول دعم NTLM التي تشكو من أن هذا الخطأ مضلل.

أود مساعدتك في حل هذا الأمر ، Tedious رائع وقد ساهمت مساهمات arthurschreiber الأخيرة في تحسينه.

تم وصف مصادقة NTLM في وثائق MS-NLMP من Microsoft. سأرى ما إذا كان بإمكاني أن أجد بعض الوقت لقراءته ومقارنته بما تم تنفيذه حتى الآن بطريقة مملة.

arthurschreiberarobson OMG يعمل أخيرًا !!! شكرًا جزيلاً لكم يا رفاق على دعمكم في الوقت المناسب !!! إذن هذا هو التكوين النهائي الخاص بي:

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

أنا أستخدم SQL Server 2008 R2 على جهاز ظاهري. البرنامج النصي موجود على نفس الخادم الذي يستضيف قاعدة البيانات.

سيكون من الرائع أن تتمكن من إضافة هذا إلى الوثائق في مكان ما

بارد! حقيقة أن مصادقة NTLM لا تعمل مع التشفير هي خطأ في الشفرة ، وسأقدم إصلاحًا قريبًا (إذا كان بإمكاني العثور على بعض الوقت لذلك).

في الواقع ، يؤدي رسملة النطاق إلى حل المشكلة!

https://github.com/pekim/tedious/pull/367 هو إصلاح لمصادقة NTLM التي لا تعمل مع التشفير.

هل تشير هذه المناقشة إلى استخدام مصادقة Windows من Linux؟ على سبيل المثال RedHat؟

pisees نعم ، أقوم بالاتصال من Fedora 22 بخادم SQL باستخدام Windows Auth مع التشفير مع الإصلاح.

واجهت نفس المشكلة بالضبط مع NamTThai ، وهي تعمل الآن بعد أن قرأت هذا وقمت بتغيير المجال كما هو موضح. (كل الأحرف الكبيرة والجزء الأول فقط من المجال ، احذف الجزء الذي يلي النقطة)

أنا مع Microsoft وأتطلع إلى المساعدة ببعض المساهمات المملة.
هل هناك أي شيء لا يزال معلقًا مع هذه المشكلة أم أنه تم حلها بالكامل؟

tvrprasad أعتقد أن هناك حلًا ، لست متأكدًا من أننا جميعًا نفهم سبب نجاح الحل البديل. :)

benzou هل الحل البديل هو الذي وصفه arobson في هذا الموضوع في 8/15؟
ما الذي يمنع إغلاق هذه المشكلة؟ ربما يمكنني المساعدة في إغلاق هذا ... بطريقة ما :)

tvrprasad أعتقد أننا بحاجة إلى توثيق أفضل حول هذا الموضوع.

لدينا وثائقنا مخزنة في الفرع gh-pages لهذا الريبو ، ولكن نظرًا لأنه يتم الاحتفاظ بها خارج قاعدة التعليمات البرمجية ، فإنها تصبح قديمة بسهولة ، كما أن الصيانة تمثل عبئًا ثقيلًا. 😞

tvrprasad - كانت المشكلات التي تم الإبلاغ عنها إلى مملة وسلسلة الريبو الخاصة بنا منذ أن أضفت دعم NTLM ، ترجع باستمرار إلى أن المجال محدد بأحرف صغيرة و / أو FQDN. قد يكون أحد الحلول لذلك هو المتابعة مع العلاقات العامة التي:

  1. يحول المجال إلى أحرف كبيرة (كان يجب أن أفعل ذلك لتبدأ)
  2. يقسم النطاق على . ويستخدم المقطع الأول فقط

أنا بالتأكيد لست خبيرًا في NTLM ولكننا معجبين بـ MSSQL و Node وقد احتجت إلى ذلك حقًا ، لذلك تعمقت في توثيق NTLM والتطبيقات الأخرى للحصول على هذا في مكانه مع بعض المساعدة من فريق العمليات لدينا لاختبار عدد من SQL Server الإصدارات حتى نكون واثقين نسبيًا من التنفيذ. أي تحليل وتحسينات يمكنك تقديمها بشأن ما هو موجود سيكون رائعًا. ليس هناك ما يخبرني بما فاتني منذ أن التوثيق الذي اتبعته كان من عام 2007 😄

اسمحوا لي أن أعرف إذا كانت هناك أسئلة محددة يمكنني الإجابة عنها حول NTLM بت.

arobson - يبدو أن FDQN يعمل بالنسبة لي ، إلا أنه لا يزال بالأحرف الكبيرة. لقد أنشأت مشكلة منفصلة للتحويل إلى حالة الأحرف الكبيرة لسهولة التتبع - https://github.com/tediousjs/tedious/issues/414. سأقوم بتجميع العلاقات العامة لذلك. سأحاول معرفة سبب عدم عمل الأحرف الصغيرة.

arthurschreiber - سأحاول المساعدة في تحديث الوثائق بمجرد أن أتمكن من الحصول على علاقات عامة واحدة على الأقل من خلال هذا الموضوع حتى يكون لدي فهم أفضل. إذا كانت هناك مجالات أخرى تفتقر إلى التوثيق ، فيرجى إبلاغي بذلك. سأحاول المساعدة.

فتحت مشكلتين أخريين تتعلقان بالمصادقة. أنا أقدر الأفكار حول هؤلاء.
https://github.com/tediousjs/tedious/issues/415
https://github.com/tediousjs/tedious/issues/416

الناس - لديّ علاقات عامة لتنفيذ مصادقة Windows المتكاملة - https://github.com/tediousjs/tedious/pull/497. هذا لا يتطلب اسم مستخدم أو كلمة مرور ويستخدم بيانات اعتماد تسجيل دخول المستخدم.

إذا كنت قادرًا على تجربته وإبداء الرأي ، فسأكون ممتنًا جدًا لذلك. إنني أتطلع إلى العمل مع المجتمع للحصول على الميزة.

مرحبًا ، إذا كان بإمكان أي شخص مساعدتي ، لقد حاولت الاتصال بقاعدة بيانات MS SQL Server 12 استخدمت عقدة mssql 4.1 ، لقد جربت بالفعل الكثير من الأشياء ، لكن لا يمكنني الاتصال

اتصالي يتوافق مع أدناه:

x

أنا أحاول:

const stringConnect = 'Server = ADMIN-CCE \ admin: 1433 ؛ قاعدة البيانات = GRD ؛ معرف المستخدم = admin-cce \ admin ؛ "
DATABASE.connect (stringConnect)
ثم (conn => {
global.conn = conn؛
console.log ("متصل بـ GRD") ؛
})
.catch (err => console.error ( connection error mssql $ {stringConnect} - $ {err} )) ؛

module.exports = قاعدة البيانات ؛

* خطأ في الإرجاع **
خطأ اتصال mssql الخادم = ADMIN-CCE \ admin: 1433 ؛ قاعدة البيانات = GRD ؛ معرف المستخدم = admin-cce \ admin ؛ - خطأ في الاتصال: منفذ المشرف: 1433 غير موجود في ADMIN-CCE

جربت بالفعل طرقًا أخرى ، ولكن أيضًا دون جدوى! نظرة:

فار التكوين = {
الخادم: "ADMIN-CCE \ MSSQLSERVER" ،
قاعدة البيانات: "GRD" ،
المنفذ: 1433 ،
المستخدم: "admin-cce \ admin" ،
التصحيح: صحيح ،
والخيارات: {
تشفير: خطأ ،
TrustedConnection: صحيح
}
} ؛

DATABASE.connect (config، function (err) {
إذا (يخطئ)
{
console.log (يخطئ)
}
آخر
console.log ('متصل .....')
}) ؛

module.exports = قاعدة البيانات ؛

* إرجاع الخطأ *
رسالة:
"فشل الاتصال بـ ADMIN-CCE: غير محدد - تعذر الاتصال (تسلسل)" ،
الكود: "ESOCKET"} ،
الاسم: "خطأ اتصال"}

مرحبًا allexon ، مملة لا تدعم مصادقة Windows المتكاملة حتى الآن ، التفاصيل موجودة في https://github.com/tediousjs/tedious/issues/660.

هل مملة تدعم مصادقة نوافذ خادم SQL حتى الآن؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات