Beispiel #1
0
        /// <summary>
        /// Überprüft Windows-Anmeldeinformationen.
        /// </summary>
        /// <param name="username">Windows-Benutzername</param>
        /// <param name="password">Windows-Kennwort</param>
        /// <param name="domain">Windows-Computername oder Active Directory-Domäne</param>
        /// <returns>Wahr, wenn die Anmeldung erflgreich war, ansonsten Falsch</returns>
        private bool ValidateWindowsCredentials(string username, string password, string domain)
        {
            if (MonoCheck.IsRunningOnMono && MonoCheck.IsUnixOS)
            {
                return(false);                // Windows-Authentication isn´t supported on Linux or Mac.
            }
            IntPtr token = IntPtr.Zero;

            try
            {
                bool success = WindowsSecurityTools.LogonUser(
                    username,
                    domain,
                    password,
                    WindowsSecurityTools.LogonType.LOGON32_LOGON_NETWORK,
                    WindowsSecurityTools.ProviderType.LOGON32_PROVIDER_DEFAULT,
                    out token) != 0;

                if (success && token != IntPtr.Zero)
                {
                    WindowsIdentity identity = new WindowsIdentity(token);
                    return(identity.IsAuthenticated && !(identity.IsGuest || identity.IsAnonymous));
                }
                return(false);
            }
            finally
            {
                WindowsSecurityTools.CloseHandle(token);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Überprüft Windows-Anmeldeinformationen.
        /// </summary>
        /// <param name="username">Windows-Benutzername</param>
        /// <param name="password">Windows-Kennwort</param>
        /// <param name="domain">Windows-Computername oder Active Directory-Domäne</param>
        /// <returns>Wahr, wenn die Anmeldung erflgreich war, ansonsten Falsch</returns>
        private bool ValidateWindowsCredentials(string username, string password, string domain)
        {
            // Variable für Windows-Sicherheitstoken
            IntPtr token = IntPtr.Zero;

            try
            {
                // Windows-Anmeldung durchführen
                bool success = WindowsSecurityTools.LogonUser(
                    username,
                    domain,
                    password,
                    WindowsSecurityTools.LogonType.LOGON32_LOGON_NETWORK,
                    WindowsSecurityTools.ProviderType.LOGON32_PROVIDER_DEFAULT,
                    out token) != 0;

                // Wenn die Anmeldefunktion erfolgreich verarbeitet wurde ...
                if (success && token != IntPtr.Zero)
                {
                    // Authentifizierte Identität abfragen
                    WindowsIdentity identity = new WindowsIdentity(token);

                    // Wahr zurückgeben, wenn die Identität weder ein Gast noch anonym ist
                    return(identity.IsAuthenticated && !(identity.IsGuest || identity.IsAnonymous));
                }
                // Falsch zurückgeben
                return(false);
            }
            finally
            {
                // Unverwalteten Hande auf den Sicherheitstoken schließen
                WindowsSecurityTools.CloseHandle(token);
            }
        }