What Active Directory field do I use to uniquely identify a user?

后端 未结 4 1152
梦谈多话
梦谈多话 2020-12-30 03:05

I have an Asp.net MVC project authenticating through AD. I would like to store audit information in tables for the current logged in user. What should I be storing in the da

相关标签:
4条回答
  • 2020-12-30 03:54

    samAccountName is the user name the user uses to log in with. You can get a little more 'complete' by prepending the domain too, but there's no reason not to use the obvious username field.

    0 讨论(0)
  • 2020-12-30 04:02

    If you are using ASP.NET MVC (or Webforms for that matter) with Windows Authentication, why not just use the user name that you get from this property:

    HttpContext.Current.User.Identity.Name
    

    This returns Domain/Username of the user. I have worked on corporate web apps that used this for auditing purposes. I would be curious to know if you think this is not unique enough for your purposes.

    Also I'm not sure why you would want to store a SID or GUID of the user, as it is very hard to read compared to domain/user when you are viewing audit logs.

    0 讨论(0)
  • 2020-12-30 04:03

    According to SID vs. GUID ...

    The reason for using SIDs at all, and not GUIDs, is for backward compatibility. Windows NT uses SIDs to identify users and groups in ACLs on resources.

    That being said, I've decided to go with GUID. SIDs will actually change if you move a user to a new domain, the GUID will remain constant. So long as you don't plan on running your application against an NT4 AD server, GUID is the way to go.

    0 讨论(0)
  • 2020-12-30 04:04

    You might want to use the SID -- that's what the OS itself uses in most cases. SIDs are also unique across domains or workgroups.

    The problem with user name alone is that it can be changed, whereas the SID is fixed.

    0 讨论(0)
提交回复
热议问题