validar usuario single password obtener datos crear conectar con active c# active-directory

c# - usuario - ¿Cómo puedo detectar si mi programa se ejecuta en un entorno de Active Directory?



single sign on c# active directory (5)

¿Cómo puedo detectar si mi programa se ejecuta en un entorno de Active Directory?

Estoy usando C # y .Net 2.0


Encontré algo que funciona:

usando System.Net.NetworkInformation;

IPGlobalProperties.GetIPGlobalProperties (). DomainName;

Funciona con un usuario local y un usuario de dominio.


Este código verificará si la computadora en sí es miembro de un dominio

using System.DirectoryServices.ActiveDirectory; bool isDomain = false; try { Domain.GetComputerDomain(); isDomain = true; } catch (ActiveDirectoryObjectNotFoundException) { }

Sin embargo, la computadora puede estar en un dominio, pero el usuario actualmente conectado puede ser una cuenta de usuario local. Si desea verificar esto, use la función Domain.GetCurrentDomain()


Desde http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.path.aspx

Para enlazar al dominio actual usando LDAP, use la ruta "LDAP: // RootDSE", luego obtenga el contexto de nomenclatura predeterminado y vuelva a enlazar la entrada.

Entonces, sin un dominio, el enlace a "LDAP: // RootDSE" debería fallar o no devolver nada. No lo probé por mí mismo.

use System.DirectoryServices; // add reference to system.directoryservices.dll ... DirectoryEntry ent = new DirectoryEntry("LDAP://RootDSE"); String str = ent.Properties["defaultNamingContext"][0]; DirectoryEntry domain = new DirectoryEntry("LDAP://" + str);

Esta es definitivamente una manera más limpia de buscar un Directorio Activo que confiar en una variable de entorno (que el usuario podría eliminar o agregar para suplantar el programa).


Intente obtener Environment.UserDomainName y compararlo con Environment.MachineName. Si los dos son iguales, es probable que el usuario no tenga un dominio. Si no son lo mismo, el usuario inicia sesión en un dominio que debe tener un servidor de directorio.


Una forma podría ser consultar la variable de entorno LOGONSERVER. Eso le dará el nombre del servidor de su controlador de AD ... que, hasta donde yo sé, estará en blanco (o coincidirá con la estación de trabajo actual? No estoy seguro) si no está actualmente conectado a un dominio.

Ejemplo de uso:

string ADServer = Environment.GetEnvironmentVariable("LOGONSERVER");