跨 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 会话状态服务跨应用程序共享会话

向经典 ASP.NET Web 窗体应用和 Web API 应用添加共享身份验证

在 ASP.Net 5 / Core 中启用跨域资源共享 (CORS)

从 DotNetNuke 迁移到 ASP.NET Core