Absolument. Ceci est particulièrement utile pour les applications intranet.
Puisque vous n'avez pas spécifié votre environnement, je suppose qu'il est .NET, mais ce n'est pas la seule voie possible bien sûr.
Active Directory peut être interrogé facilement à l'aide LDAP. Si vous utilisez .NET, vous pouvez faire quelque chose comme dans this code example ou mon exemple ci-dessous. Vous pouvez également le faire au sein de SQL environments.
Si vous avez juste besoin de Windows pour gérer l'authentification, vous pouvez définir, par exemple, une application Web .NET pour Windows Authentication. Assurez-vous de turn off Anonymous Logins dans IIS pour votre application. Une fois cela fait, vous pourrez accéder au nom d'ouverture de session Windows de l'utilisateur et l'utiliser pour effectuer d'autres contrôles de sécurité (par exemple, leur group/role membership dans AD).
Vous pouvez également simplifier tout ce gâchis en utilisant quelque chose comme Enterprise Library de Security Application Block.
Voici un court exemple C#: (convertir en VB.NET here)
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;
}
Vous ne devez pas spécifier un contrôleur de domaine. L'exécution du constructeur vide/par défaut pour DirectorySearcher l'amènera à tenter d'en rechercher automatiquement — en fait, c'est the preferred method.
Quelle infrastructure d'application Web? ASP.NET? Ce sera pertinent. –