代码之家  ›  专栏  ›  技术社区  ›  Jim Mitchener

我使用什么Active Directory字段来唯一标识用户?

  •  18
  • Jim Mitchener  · 技术社区  · 15 年前

    我有一个ASP.NET MVC项目正在通过AD进行身份验证。我希望将审核信息存储在表中,以供当前登录用户使用。我应该在数据库中存储什么?我正在使用 SamAccountName 为我的会员和角色提供者。我应该用这个吗?我应该用更详细和现代的吗 UserPrincipalName ?如果我们最终使用多个域呢?

    怎么样 Guid ?guid似乎是一个显而易见的选择,但我对此一无所知。为什么可以为空?这个值会改变吗?它是用来干什么的?

    更新

    根据 SID vs. GUID

    使用SID而不是guid的原因是为了向后兼容。WindowsNT使用sids在资源的acls中标识用户和组。

    如果将用户移动到一个新的域中,SID将实际更改,那么GUID将保持不变。 常数。在我看来,除非您打算对NT4AD服务器进行身份验证,否则guid是一种可行的方法。

    我不知道该怎么办,因为我已经两天不能接受自己的回答了。最深入的解释会赢吗?

    4 回复  |  直到 15 年前
        1
  •  7
  •   Jim Mitchener    15 年前

    根据 SID vs. GUID

    使用SID而不是guid的原因是为了向后兼容。WindowsNT使用sids在资源的acls中标识用户和组。

    也就是说,我决定和guid一起去。如果您将用户移动到一个新的域,那么sids实际上会改变,guid将保持不变。只要你不打算在NT4AD服务器上运行你的应用程序,guid就是一条路。

        2
  •  2
  •   RickNZ    15 年前

    您可能想要使用SID——这是操作系统本身在大多数情况下使用的。SID在域或工作组中也是唯一的。

    用户名本身的问题是它可以更改,而sid是固定的。

        3
  •  -1
  •   dso    15 年前

    如果将ASP.NET MVC(或WebForms)用于Windows身份验证,为什么不使用从该属性获得的用户名:

    HttpContext.Current.User.Identity.Name
    

    这将返回用户的域/用户名。我曾在公司的网络应用程序上工作过,这些应用程序将其用于审计目的。我很想知道你是否认为这对于你的目的来说不够独特。

    另外,我不知道为什么要存储用户的sid或guid,因为与域/用户相比,查看审核日志时很难读取。

        4
  •  -2
  •   gbjbaanb    15 年前

    samaccountname是用户用来登录的用户名。您也可以通过预先准备域来获得更多的“完整性”,但是没有理由不使用明显的用户名字段。