跨 DNN 和 ASP.net 应用程序共享身份验证、成员资格和角色
Posted
技术标签:
【中文标题】跨 DNN 和 ASP.net 应用程序共享身份验证、成员资格和角色【英文标题】:Shared Authentication, Membership & Roles across DNN and ASP.net applications 【发布时间】:2009-05-06 16:54:12 【问题描述】:这是我的情况。我有一个 DotNetNuke 应用程序。我想从 DNN 网站链接到现有的 ASP.net 网站,并决定为此使用 DNN 的 IFrame。
现有的 ASP.net 应用程序使用表单身份验证来确保安全 - 只有授权用户才能访问页面。这个 asp.net 应用程序还需要用户角色来授权到不同的页面。
我不希望用户必须登录两次,我希望 asp.net 页面使用来自 DNN 应用程序的用户成员资格和角色数据 - 它不应该需要它自己的成员资格数据库。
这可能吗?根据 MSDN 网站:
"ASP.NET 支持分布式环境中的表单身份验证,无论是跨单个服务器上的应用程序还是在 Web 场中。当跨多个 ASP.NET 应用程序启用表单身份验证时,用户在切换时无需重新进行身份验证应用程序之间。”
这是否适用于链接到 asp.net 应用程序的 DotNetNuke 应用程序?两者也在同一个域中。
(我尝试修改 asp.net 页面的 config.web 以使用 DNN config.web,匹配机器密钥和表单设置 - 但它不起作用。我可能做错了什么,但在我之前追求,我想知道这是否可能。)
感谢您的帮助!
【问题讨论】:
【参考方案1】:我不知道你所说的在 DNN 中是否可行。我们在 DNN 4.0 上,他们对 ASP.NET 成员表做了一些奇怪的事情,这可能会导致麻烦。
我可以告诉您的是另一种方法(假设您可以控制 ASP.NET 应用程序)。有一个名为MADAM(Mixed Authentication Disposition ASP.NET Modules - 我知道有点拗口)的项目,可用于为应用程序登录提供表单身份验证以外的方法。
您可以做的是在您的 ASP.NET 应用程序上设置 MADAM,然后从 DNN 将用户凭据传递给 ASP.NET 应用程序。最终结果向用户显示为单点登录。
如果您需要我详细说明任何事情,请在 cmets 中告诉我。
【讨论】:
非常有帮助的想法 - 非常感谢!我检查了 MADAM,它看起来就像我正在寻找的那样。我可能会在 IFrame 中让身份验证在 DNN 和 asp.net 之间协同工作方面更加努力......我正在阅读这个链接:blogs.neudesic.com/blogs/michael_morozov/archive/2006/03 /17/72.aspx 它有一些关于单点登录的好信息在不同场景下的两个 .net 应用程序之间。但如果这不起作用,我会和 MADAM 一起去 - 再次感谢您!【参考方案2】:实际上,我在 dnn 页面上的 iframe 模块中显示了一些 aspx 页面。现在,由于在 iFrame 内部,我正在显示托管在其他地方但在同一服务器上的 aspx 页面。我只想在 iFrame 中加载页面之前验证 dnn 登录用户。
dnn 是否提供我可以从托管在其他地方的 apsx 页面调用的任何 API,以限制对任何未经授权的用户的访问。
【讨论】:
以上是关于跨 DNN 和 ASP.net 应用程序共享身份验证、成员资格和角色的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET下跨应用共享Session和使用Redis进行Session托管
ASP.NET MVC 表单身份验证域属性在 Firefox 中中断登录
向经典 ASP.NET Web 窗体应用和 Web API 应用添加共享身份验证