Абсолютно. Это особенно полезно для приложений в интрасети.
Поскольку вы не указали свою среду, я предполагаю, что это .NET, но, конечно, это не единственный способ.
Active Directory можно легко запросить, используя LDAP . Если вы используете .NET, вы можете сделать что-то вроде этого примера кода или моего примера ниже. Вы также можете сделать это в средах SQL .
Если вам нужна только Windows для обработки аутентификации, вы можете, например, настроить веб-приложение .NET для Аутентификация Windows . Обязательно отключите анонимные логины в IIS для вашего приложения. После этого вы сможете получить доступ к имени пользователя для входа в Windows и использовать его для дальнейших проверок безопасности (например, их членство в группе / роли в AD).
Вы также можете упростить весь беспорядок, используя что-то вроде блока приложения безопасности Enterprise Library .
Вот краткий пример C #: (преобразовать в VB.NET здесь )
using System.DirectoryServices;
/// <summary>
/// Gets the email address, if defined, of a user from Active Directory.
/// </summary>
/// <param name="userid">The userid of the user in question. Make
/// sure the domain has been stripped first!</param>
/// <returns>A string containing the user's email address, or null
/// if one was not defined or found.</returns>
public static string GetEmail(string userid)
{
DirectorySearcher searcher;
SearchResult result;
string email;
// Check first if there is a slash in the userid
// If there is, domain has not been stripped
if (!userid.Contains("\\"))
{
searcher = new DirectorySearcher();
searcher.Filter = String.Format("(SAMAccountName={0})", userid);
searcher.PropertiesToLoad.Add("mail");
result = searcher.FindOne();
if (result != null)
{
email = result.Properties["mail"][0].ToString();
}
}
return email;
}
Вам не нужно указывать контроллер домена. Выполнение пустого / заданного по умолчанию конструктора для DirectorySearcher заставит его автоматически попытаться найти его & mdash; фактически это предпочтительный метод .