【问题标题】:ASP.NET MVC windows authentication integrationASP.NET MVC windows 身份验证集成
【发布时间】:2012-11-22 20:52:27
【问题描述】:

我们有一个可供 10 人左右使用的内部工作跟踪系统。目前我们使用表单身份验证。登录表单由一个文本框组成,用户在其中输入他们的姓名,然后我们设置表单身份验证 cookie。没有密码。

FormsAuthentication.SetAuthCookie(userName, true);

我们现在可以使用用户名保存到数据库并通过调用 User.Identity.Name 在各种控制器的屏幕上显示。

到目前为止,这种简单的方法已经足够了,但现在我们准备开始使用 Active Directory 对用户进行身份验证。我们希望用户能够使用他们的域用户名和密码登录。

所以我们启用 Windows 身份验证。

然而,问题是现在 User.Identity.Name 采用 DOMAIN\USER 格式。也有可能有一天某个用户的域用户名与我们的工作跟踪系统中的用户名不同。

为用户分配“工作跟踪器用户名”的最佳方式是什么,以便他们可以使用其域用户名登录,但工作跟踪器可以记录工作并使用不同的用户名显示人员姓名。

我知道我可以使用会话,或者我可以调用数据库,但是有没有更正确的方法呢?

【问题讨论】:

    标签: c# asp.net-mvc authentication active-directory asp.net-membership


    【解决方案1】:

    首先决定将信息存储在哪里。这可以是数据库、Active Directory 或其他任何东西。然后决定如何维护它(例如,管理 UI,可能受基于角色的安全保护。或者如果它存储在 Active Directory 中,您可以将这项工作委派给您的 AD 管理员)。

    之后进行查找很简单,并且可能将查找到的值缓存在 Session 中,或者可能在 Cache 中。

    【讨论】:

    • 我想将它存储在数据库中并缓存它是有意义的,但是我该如何检索它呢?
    • 我的意思是,有没有一个地方我可以设置它并像 User.Identity.Name 一样轻松检索它
    • 如果你想要内置的东西,你可以使用 ASP.NET Profile 属性:msdn.microsoft.com/en-us/library/2y3fs9xs(v=vs.100).aspx。否则,就自己动手吧。
    【解决方案2】:

    最后我切换到表单身份验证,因为 Windows 身份验证在某些 Android 手机上不起作用。我还使用 ActiveDirectoryMembershipProvider 针对域对用户进行身份验证。有关详细信息,请参阅我关于此主题的其他问题。

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 2015-01-31
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多