Абсолютно. Это особенно полезно для интранет-приложений.
Поскольку вы не указали свою среду, я предполагаю, что это .NET, но, конечно, это не единственный возможный способ.
Active Directory можно легко запросить с помощью LDAP. Если вы используете .NET, вы можете сделать что-то вроде этот пример кода или мой пример ниже. Вы также можете сделать это внутри Среды SQL, а также.
Если вам просто нужна Windows для обработки аутентификации, вы можете настроить, например, веб-приложение .NET для Проверка подлинности Windows. Обязательно отключите анонимный вход в IIS для вашего приложения. После этого вы сможете получить доступ к имени пользователя для входа в Windows и использовать его для дальнейших проверок безопасности (например, его членство в группах/ролях в AD).
Вы также можете упростить весь этот беспорядок, используя что-то вроде Security Application Block.
Вот краткий пример 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 приведет к тому, что он попытается найти его автоматически, фактически, это предпочтительный метод.
person
Sean Hanley
schedule
10.10.2008