【问题标题】:What is a strategy from moving from home grown forms authentication to AD?从本地表单身份验证转移到 AD 的策略是什么?
【发布时间】:2011-08-20 15:49:22
【问题描述】:

问题说明了一切。我们的应用程序当前正在根据数据库对用户进行身份验证。我们有内部和外部用户的混合体。对于新的内部应用程序,我们希望为内部用户迁移到 AD,并且在未来我们希望设置一个服务,允许外部用户在网站上注册,但使用注册码创建一个具有基于权限的 AD 用户在他们点击的 URL 上。我们的方案是 [customername].company.com。有哪些建议?你有过这样的经历吗?

编辑:这是 webforms 和 mvc 的混合。 .NET 4.0

【问题讨论】:

  • 这是用于 ASP.NET/web 应用程序,还是用于 WinForms - 或两者兼而有之??您使用的是哪个版本的 .NET 框架??
  • @marc_s 已更新以反映平台。

标签: c# authentication active-directory forms-authentication


【解决方案1】:

如果您使用的是 .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 应用程序,我建议您检查具有 AD 接口的 ASP.NET 成员资格和角色提供程序,以便您可以使用 AD 组(以及这些组中的用户成员资格)作为允许/禁止某些功能的标准。

查看有关该主题的一些博客文章:

【讨论】:

  • 我将如何处理访问 companyA.company.com 与 companyB.company.com 的用户?
  • 这些是独立的 AD 域吗?它们是否属于同一个 AD 森林,这些域之间是否存在相互信任和双向信任??
  • @marc_s 今天它们不是子域。事实上,今天该站点是一个 vdir,我们根据 [customer].company.com 中的 [customer] 做出配置决策。实际的 AD 结构尚未设置,因此 AD 配置对于最佳实践是开放的。
  • @TheHurt:这些外部用户的 AD 帐户将驻留在哪里?与您的内部用户在同一个 AD 域中(只是在单独的 OU 或容器中)?对于外部用户,您可能需要使用具有执行操作权限的特定用户/密码创建域上下文,并且您可以将域上下文限制为具有另一个重载构造函数的子容器/子 OU(例如,限制您的外部用户的域上下文到OU=ExternalUsers,DC=YourCompany,DC=com)
  • @marc_s 是的,我认为我们将拥有一个域(或与主域信任的每个数据中心的子域)。最初的想法是我们将有一个服务来模拟能够创建用户的用户,但只有该服务才有权限。
猜你喜欢
  • 2017-05-20
  • 2018-06-08
  • 2022-07-19
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2022-01-11
  • 2023-03-23
相关资源
最近更新 更多