рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдПрдХ рд╣реА рдбреЛрдореЗрди рдкрд░ рд╣реВрдВ, рдлрд┐рд░ рднреА рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ ADO.NET рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕реНрдЯреЛрд░ рд╕реЗ рдХреЗрд░реНрдмреЗрд░реЛрдЬ рдЯреЛрдХрди рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдХреНрд╖рдорддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Tedious рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ? рдпрд╛ рдХреНрдпрд╛ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо/рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛?
@arobson @arthurschreiber - рд╡рд┐рдЪрд╛рд░ рдХреГрдкрдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреБрдЫ рдЬрд╛рдВрдЪ рдХреАред рдореИрдВрдиреЗ рдЕрдм рддрдХ рдЬреЛ рд╕реАрдЦрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдПрд╕рдПрд╕рдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреЛрдбрдЬреЗрдПрд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрд╕рдПрд╕рдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдиреЛрдб-рдПрд╕рдПрд╕рдкреАрдЖрдИ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рд╕рд╛рде рд╣реА рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ HTTP рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдПрд╕рдПрд╕рдкреАрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореВрд▓ рдХреЛрдб рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рдирдП рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдПрд╕рдПрд╕рдкреАрдЖрдИ рд╕рдорд░реНрдерди рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдЯреЗрдбрд┐рдпрд╕ рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ рдЯреЗрдбрд┐рдпрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рд╡рд┐рдВрдбреЛрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдСрде рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд▓реЗрддрд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рджред
рд╣рд╛рдБ, рдпрд╣ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдмрд╛рдЗрдирд░реА рдореЙрдбреНрдпреВрд▓ рдердХрд╛рдК рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ npm рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ред
рдардВрдбрд╛ред рдкрд╣рд▓реЗ рдХрдЯ рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ?
рд╡рд┐рдВрдбреЛрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рд╣реИрдВред рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рдорд░реНрдерди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдмрдирд╛рдо рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдорд┐рд╕рд╛рд▓ рд╣реИред
рдардВрдбрд╛ред рдкрд╣рд▓реЗ рдХрдЯ рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ?
рд╣рд╛рдБ рдпрд╣ рдареАрдХ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдареАрдХ рд╣реИред рдореИрдВ
рдореИрдВ рдЕрдкрдиреЗ рдорди рдореЗрдВ ClientSspi рдХреНрд▓рд╛рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕реНрдирд┐рдкреЗрдЯ рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред
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;
});
});
}
});
рдореЗрд░реЗ рдкрд╛рд╕ https://github.com/tvrprasad/sspi-client рдкрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╕реНрдЯрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ
@arthurschreiber рдХреГрдкрдпрд╛ рдореМрдХрд╛ рдорд┐рд▓рдиреЗ рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВред рдореБрдЭреЗ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬреЗрдВ рдпрд╛ рднрдВрдбрд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЦреБрд▓реЗ рдореБрджреНрджреЗред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрд░ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдЯреЗрдбрд┐рдпрд╕ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ sspi-client рдХреЛ рдердХрд╛рдК рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХреБрдЫ рдлреЗрдВрдХрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд░рддрд╛ рд╣реИ! рдореИрдВ рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ ntlm, kerberos рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдкреИрдХреЗрдЬ рдкрд░ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛!
@arthurschreiber рдЖрдк рдпрд╣рд╛рдВ рд╣реИрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft
рдкреНрд▓рдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рддрдХ Windows рдПрдХреАрдХреГрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛, https://github.com/tediousjs/tedious/commit/f5a2260f рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
@ рд╡реА-рд╕реБрд╣рд╛рдореЗ рдЗрд╕рдореЗрдВ рдирд╡реАрдирддрдо рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рд╕рд┐рд░реНрдл #624 рдкрд░ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореИрдВ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
@kevinkuszyk рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @arthurschreiber рдореЗрдВ рд▓реВрдкрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдХреНрдпрд╛ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдХреАрдХреГрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИ?
@ sxpati2 рд╡рд┐рдВрдбреЛрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╣реИред Linux рдХреЗ рд▓рд┐рдП рдпрд╣ Kerberos рдПрдХреАрдХреГрдд рдкреНрд░рдорд╛рдгрди рд╣реЛрдЧрд╛ред Tedious рд╡рд░реНрддрдорд╛рди рдореЗрдВ Windows рдпрд╛ Kerberos рдПрдХреАрдХреГрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реА рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реИред
рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдореБрдЦ рд░рд┐рдлреИрдХреНрдЯрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореИрдВ msnodesqlv8 рдХреЛ рдердХрд╛рдК рдореЗрдВ рд▓реВрдк рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ msnodesqlv8 рд╕рд┐рд░реНрдл рд╕реАрдХреНрд╡реЗрд▓ рдореЗрдВ рдЙрддрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖред
@arthurschreiber рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреАрдЖрд░ # 497 рд╡рд┐рдВрдбреЛрдЬ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЛ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдпреВрдЬрд░рдиреЗрдо/рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдВрдбреЛ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдирд╡реАрдирддрдо рдердХрд╛рдК рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖ?
рдХреНрдпрд╛ рддрдм рд╕реЗ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЧрдИ рд╣реИ? рдпрд╛ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдореЗрдВ рдЦреЛ рдЧрдИ рд╣реИ?
рдХреНрдпрд╛ рддрдм рд╕реЗ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЧрдИ рд╣реИ? рдпрд╛ рд╡рд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдореЗрдВ рдЦреЛ рдЧрдИ рд╣реИ?
рдореБрдЭреЗ рднреА рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛!
рдирдорд╕реНрддреЗ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╢рдмреНрдж рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ sspi-client рдХреЛ рдердХрд╛рдК рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХреБрдЫ рдлреЗрдВрдХрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд░рддрд╛ рд╣реИ! рдореИрдВ рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ ntlm, kerberos рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдкреИрдХреЗрдЬ рдкрд░ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛!
@arthurschreiber рдЖрдк рдпрд╣рд╛рдВ рд╣реИрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
https://github.com/tvrprasad/tedious/tree/windows-integrated-auth-draft