问题说明了一切。我们的应用程序目前正在根据数据库对用户进行身份验证。我们有内部和外部用户。对于新的内部应用程序,我们希望为内部用户迁移到 AD,并且将来我们希望设置一项服务,允许外部用户在站点上注册,但让注册码创建一个基于权限的 AD 用户在他们点击的网址上。我们的方案是 [customername].company.com。有哪些建议?你有过这样的经历吗?
编辑:这是 webforms 和 mvc 的混合。 .NET 4.0
最佳答案
如果您使用 .NET 3.5 及更高版本,则应查看 System.DirectoryServices.AccountManagement
(S.DS.AM) 命名空间。在这里阅读所有相关信息:
Managing Directory Security Principals in the .NET Framework 3.5
基本上,您可以定义域上下文并轻松找到 AD 中的用户和/或组:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// validate username/password credentials against AD
if (ctx.ValidateCredentials(userName, password))
{
// do something
}
// getting current user and testing against group membership
GroupPrincipal group = GroupPrincipal.FindByIdentity("YourGroup");
UserPrincipal user = UserPrincipal.Current;
if (user.IsMemberOf(group))
{
// do something
}
新的 S.DS.AM 使得在 AD 中与用户和组一起玩变得非常容易:
如果您主要使用 ASP.NET 应用程序,我建议您查看 ASP.NET 成员资格和角色提供程序,它们具有 AD 接口(interface),以便您可以使用 AD 组(以及这些组中的用户成员资格)作为允许/禁止某些功能。
请参阅有关该主题的一些博客文章:
关于c# - 从本土表单例份验证转向 AD 的策略是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5919795/