Con l'aiuto di alcuni pezzi di codice trovati in giro avevo sviluppato una classe apposita in C# che si interfacciava ad alcune DLL di sistema:
codice:
using System;
using System.Web;
using System.IO;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing.Printing;
using System.Security.Principal;
using System.Runtime.InteropServices;
public class NetLogon
{
public static bool Login(string domain, string username, string password)
{
bool r = false;
IntPtr token;
bool result = LogonUser(
username, domain,
password,
LogonTypes.Interactive,
LogonProviders.Default,
out token
);
if (result)
{
ImpersonateLoggedOnUser(token);
CloseHandle(token);
r = true;
}
return r;
}
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(
string principal,
string authority,
string password,
LogonTypes logonType,
LogonProviders logonProvider,
out IntPtr token);
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool ImpersonateLoggedOnUser(IntPtr handle);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool CloseHandle(IntPtr handle);
enum LogonTypes : uint
{
Interactive = 2,
Network,
Batch,
Service,
NetworkCleartext = 8,
NewCredentials
}
enum LogonProviders : uint
{
Default = 0,
WinNT35,
WinNT40,
WinNT50
}
}
Compilando la classe (se c'è qualche buon'anima che la traduce in VB...) puoi utilizzare il metodo Login in questo modo:
codice:
if ( NetLogon.Login("DOMINIO", "Pippo", "Pluto") ) {
.... // si è loggato in rete, ora faccio quel che devo fare
}
Fammi sapere se funzica 
Ps. così dovrebbe funzionare solo utilizzando pagine ASPX, per applicazioni è necessario fare alcune mod.