从表单身份验证转换为Windows身份验证

4
我们目前在内网站使用表单验证,想要允许用户通过Windows验证进行身份认证。这将如何影响当前用户帐户、配置文件和角色呢?我看到在网络上可以混合使用这两种身份验证类型,并将角色和配置文件放在单独的数据库中,但我该如何将现有的角色和配置文件分配与Windows验证用户登录连接起来呢?

Active Directory?与表单身份验证并存工作得很好。 - IrishChieftain
是的,AD,但问题不在于它们是否可以共存,而在于如何从其中一个转换为另一个。 - yougotiger
3个回答

3
我不确定您是否可以完全按照您的要求完成此操作,但是您可以通过编写功能来解决问题。该功能要求已经在系统中验证过的Windows用户输入一个唯一的凭据(例如电子邮件地址),然后通过程序转换用户账户,如果他们通过点击链接进行了响应。
您可以创建新账户并从旧的未经Windows验证的账户导入信息,然后删除旧账户。但是请注意,这种方法需要更改所有依赖于用户ID的数据库记录以完成迁移。

1
那么是否有一个“升级”向导?让用户输入他们的表单身份验证信息凭据,使用新的ID凭据重新插入它,然后删除该用户的旧表单信息? - yougotiger
是的,@yougotiger,那就是我的意思。不过我很想看看其他人会说什么。 - krystan honour

2

根据您想要达成的集成程度,如果是单点登录驱动的话,需要获取用户的SID并在配置文件、角色等中查找它(可以将SID列添加到其中,但简单的SID-UserID表格可能更好)。

如果他们在其中,则可以开始使用了。如果他们不在其中,则使用表单身份验证来识别他们,并添加一个从其SID到UserID的映射。这样他们会被再次询问一次,就完成了。

您可能需要类似的机制来处理SID更改的情况,这可能发生在各种Windows问题之后,或用于非Windows用户的匿名访问等。

如果您不喜欢SID作为ID,则其他内容(例如域\用户名)可能也可以胜任。

将Windows组/角色转换为应用程序角色以进行完全集成是另一步,还有像全名等配置文件信息的合理化。

这是一个很好的快速入门方式,而不必逐个更改现在使用的UserID的所有内容。


所以如果我理解你的意思正确,你建议创建一个新表来保存AD SID和表单身份验证的UserID,这样它们就可以并排存在,并且可以相互转换?也就是说,当我想要获取他们的个人资料时,我会通过检查他们的登录来查找他们的SID,然后获取相应UserID的个人资料? - yougotiger
相反地,您可以从经过身份验证的登录中获取sid,然后查找其现有配置文件。如果存在,则使用它,所有当前的工作都将正常运行;如果不存在,请使用表单进行身份验证,然后添加下一次的sid映射。 - Tony Hopkinson

0

最终回到回答问题。我们实际上放弃了我们在表单身份验证中所拥有的东西。角色与Windows身份验证的工作方式非常不同,配置文件也是如此。我们使用了自定义配置文件提供程序而不是内置的配置文件提供程序。如果有人对我们所做的感兴趣,我编写了一系列四篇博客文章,详细介绍了我们在环境中所做的事情以及我们遇到的一些故障:第1部分第2部分第3部分第4部分


未找到http://aspadvice.com/blogs/net_discoveries/archive/2012/06/14/The-Other-Side-of-ASP.Net-Windows-Authentication_2C00_-Part-1.aspx。 - Kiquenet
未找到part2:http://aspadvice.com/blogs/net_discoveries/archive/2012/07/02/The-Other-Side-of-ASP.Net-Windows-Authentication_2C00_-Part-2.aspx - Kiquenet
是的,aspadvice已经下线了。我得找一个不同的地方来发布文章。 - yougotiger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接