繁体   English   中英

Asp.net MVC 3 Windows身份验证与登录表单

[英]Asp.net mvc 3 Windows Authentication with Login form

我已经创建了表单身份验证应用程序。 我有用户表,并创建了一个自定义成员资格提供程序。 我的用户表与其他表有关系,例如角色和权限。

  1. 我将其更改为使用Windows身份验证可以工作。 看起来很简单,但是我不知道如何仍然能够从表中读取权限? 一些表与User表相关,并且需要用户ID,在这里该怎么做? 我应该打破外键吗?

  2. 如果用户正在通过LAN访问该页面,则他/他应该被自动登录,但是如果他们通过Internet访问该应用程序,我应该允许他们登录吗? 这个怎么做? 他们应该使用什么密码登录(活动目录或我的用户表)?

我希望我能得到简单容易的答案。

问候

如果您使用Windows身份验证,则将提示用户输入凭据,仅用于访问您的站点。 您将无法防止这种情况。 在通过身份验证之前,他们甚至不会进入您的代码。

尽管我从未将其绑定到Windows身份验证,但我们已经使用SSO(单点登录)完成了类似的操作。 这样的想法是,您有两个共享用户凭据的应用程序,并且如果登录到一个,则登录到另一个。 第一个应用程序是支持基于表单的身份验证的普通应用程序。 第二个是仅执行Windows身份验证的应用程序,然后在成功登录后重定向到您的普通应用程序。 由于您已经通过身份验证,因此普通应用程序只需创建它的标准身份验证cookie,然后将您带到应用程序的主页。

通常,这些方法是通过在URL中传递令牌来进行的,然后您可以通过反向通道将令牌赎回到SSO服务器(或Windows身份验证服务器)中,以确认令牌是真实的。 如果成功兑换了令牌,则对反向通道调用的响应将包含用户名和其他相关详细信息。

该过程的草图可能如下所示:

  1. 获取对现场受保护操作的请求。
  2. 如果未通过身份验证,则无需令牌即可重定向到登录站点
    • 您的登录站点包含基于表单的登录表单和Windows身份验证URL的链接。
  3. 用户单击Windows身份验证URL
  4. Windows身份验证站点进行身份验证,在数据库中为用户创建一次性使用令牌,然后使用令牌重定向回您的登录操作
  5. 您的登录操作通过反向通道WebRequest将令牌赎回到Windows身份验证服务器。
  6. Windows身份验证服务器验证令牌,将其标记为已使用,然后将用户名返回到您的登录操作。
  7. 您的登录操作将创建标准表单身份验证cookie,然后继续正常进行。
  1. 在控制器中,您可以使用User.Identity.Name来获取用户的AD用户名。 然后,可以将一个名为ADUSername的字段添加到用户表(或更新现有用户名字段中的值),以便可以将登录的用户链接到数据库中的现有用户记录。

  2. 您无需执行任何操作,如果用户正在从外部网络或不在域中的任何计算机上访问它,则浏览器将弹出用户名/密码提示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM