首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该使用哪个Active Directory字段来唯一标识用户?

我应该使用哪个Active Directory字段来唯一标识用户?
EN

Stack Overflow用户
提问于 2009-12-16 07:49:42
回答 4查看 7.9K关注 0票数 18

我有一个通过AD进行身份验证的Asp.net MVC项目。我想在表中存储当前登录用户的审计信息。我应该在数据库中存储什么?我目前正在为我的成员资格和角色提供者使用SamAccountName。我应该用这个吗?我应该使用更冗长、更现代的UserPrincipalName吗?如果我们最终使用多个域呢?

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

更新

根据SID vs. GUID的说法。

使用SID而不是GUID的原因是为了向后兼容。Windows NT使用SID来标识资源上ACL中的用户和组。

如果您将用户移动到新域,SID实际上将发生变化,GUID将保持不变。在我看来,除非您打算在NT4 AD服务器上进行身份验证,否则GUID是可行的。

我不知道该怎么做,因为我两天内都不能接受我自己的答案。最深入的解释胜出?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-16 08:38:26

根据SID vs. GUID的说法。

使用SID而不是GUID的原因是为了向后兼容。Windows NT使用SID来标识资源上ACL中的用户和组。

话虽如此,我还是决定使用GUID。如果您将用户移动到新域,SID实际上将发生变化,GUID将保持不变。只要您不打算在NT4 AD服务器上运行您的应用程序,GUID就是最佳选择。

票数 7
EN

Stack Overflow用户

发布于 2009-12-16 08:11:59

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

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

票数 2
EN

Stack Overflow用户

发布于 2009-12-16 09:26:12

如果您正在使用Windows (或Webforms )和ASP.NET身份验证,为什么不直接使用从该属性获得的用户名:

代码语言:javascript
复制
HttpContext.Current.User.Identity.Name

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

此外,我不确定为什么要存储用户的SID或GUID,因为在查看审核日志时,与域/用户相比,它很难读取。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1911315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档