You don't have to use a web service to authenticate. I used the ADVAPI32.DLL. Here is the Local External Functions you can use if you want to use that DLL.
function long LogonUser(string username, string domain, string password, long logontype, long logonprovider, ref ulong hToken) library "Advapi32" alias for "LogonUserA;Ansi"
function boolean CloseHandle(ulong w_handle) library "Kernel32.dll"
function long GetLastError() LIBRARY "kernel32" alias for "GetLastError"
I setup a nvo with a of_logon function that took arguments for Domain, User Id, PW and a reference string for error.
Long ll_rc
ulong lul_handle
CONSTANT LONG LOGON_TYPE = 3
CONSTANT LONG PROVIDER = 0
CONSTANT String FUNCTION_NAME = "of_logon"
ll_rc = LogonUser(as_user, as_domain, as_pw, LOGON_TYPE, PROVIDER, lul_handle)
IF ll_rc > 0 THEN
CloseHandle(lul_handle)
as_error = FUNCTION_NAME + " - success"
return 1
ELSE
// ll_rc = GetLasterror( )
as_error = FUNCTION_NAME + " - logon failed. Invalid user id or password. Please be sure to use your network id and password"
return ll_rc
END IF