Changed semantics of AUTHENTICATION_WIN_LOG environment variable recognized by client library to accept the following values which are levels of logging done during Windows authentication handshake:
0 - no logging
1 - log only error messages
2 - additionally log warnings
3 - additionally log info notes
4 - also log debug messages
Setting it to 'on', 'yes' or 'true' will request log level 2 and setting it to 'debug' or 'dbug' will request log level 4.
Since the Windows authentication support has been added to libmysql, this library depends on the system Secur32 library. Consequently, clients which are linked against libmysql should be also linked with Secur32 (in addition to ws2_32).
In MS VC++ it is possible to embed information about required libraries into object file using #pragma directive. This patch adds such directive when the Windows authentiaction support is compiled. This is similar to analogous #pragma for ws2_32 library in my_init.c
BEFORE: First packet sent by client-side plugin (generated by Windows
function InitializeSecurityContext()) could be longer than 255 bytes
violating the limitation imposed by authentication protocol.
AFTER: Handshake protocol is changed so that if first client's reply is
longer than 254 bytes then it is be sent in 2 parts. However, for replies
shorter than 255 bytes nothing changes.
ADDITIONAL CHANGES:
- The generic packet processing loop (Handshake::packet_processing_loop)
has been refactored. Communication with the peer has been abstracted
into virtual methods read/write_packet() which are implemented in client
and server and transparently do the required splitting and gluing of packets.
- Make it possible to optionally use dbug library in the plugin.
- Add code for testing splitting of long first client reply.
into the server repository
This patch adds client windows authentication plugin code to the client
library libmysql (only on Windows platform). The plugin is compiled into
the library and added to the list of built-in plugins. This way clients
should be able to connect to a server which uses windows authentication
plugin even as an SQL user which uses such authentication.
Note: this makes the client library to depend on Secur32 Windows system
library. When building clients, they must be linked against Secur32.
Command mysql_config --libs correctly lists Secur32 as a required
dependency.