【问题标题】:ASP.NET - authentication against multiple domainsASP.NET - 针对多个域的身份验证
【发布时间】:2009-12-18 16:50:19
【问题描述】:

我的网站可以从多个域(我自己的博客引擎)访问。那么,我该如何交叉验证呢?

我正在使用:IIS7、C#、asp.net 成员资格、表单身份验证。

【问题讨论】:

  • 您是尝试同时对所有域进行身份验证还是允许来自多个域的用户?
  • 抱歉打错字了。域,我的意思是网站域。
  • 是的,这让我和你的“交叉身份验证”都崩溃了。请参阅我的答案的第二部分。

标签: c# asp.net authentication forms-authentication


【解决方案1】:

如果您使用的是 Active Directory(假设这就是您所说的域),您可以简单地配置多个 ActiveDirectoryMembershipProvider 部分并使用 asp:Login 控制模板,为要对其进行身份验证的域添加一个下拉列表,并在 Login 控件的 OnAuthenticate 事件上,设置选定的 AD 成员资格提供程序。

对于 SQL Server 成员资格提供程序等不同的提供程序,我不确定我是否理解问题所在。能详细点吗?

在尝试再次阅读您的问题几次后,我将在这里猜测一下。如果使用“多个域”意味着您有多个网站(多个完全限定的域名),并且您希望使用相同的 SQL Server 数据存储来验证用户身份并运行相同的网站,则解决方案是指向适当的 DNS原始托管服务器的 IP 地址的记录。 任何体面的域名注册商都应该允许您更改 DNS 记录。

但是,Forms Auth 会创建一个 cookie,由于明显的安全问题,您将无法从与您所在域不同的域中读取 cookie,因此在这种情况下,您卡住了。

我能看到的唯一可能性是您在查询字符串中传递了一些加密身份,但这非常非常狡猾,因为您希望确保它有一个最小的有效时间限制,因为它打开了一个正确的蠕虫罐头(安全漏洞)。可能不推荐。

Crikey,说“不,你不能 - 安全地”的方式很长。

如果谈论的是 sub 域而不是不同的顶级域,那么您实际上可以这样做,请参阅this post

【讨论】:

  • 是的,ActiveDirectoryMembershipProvider 只是另一个插入 Forms Auth 的成员资格提供程序。
  • @Wim Hollebrandse:我正在使用 SqlMembershipProvider?
  • 另外,使用 asp:Login 控件的哪一部分让您认为我不是在谈论 Forms Auth?
  • @zerronnea 那么你需要解释一下你对多个域和交叉身份验证的含义。如果您的用户有一个 SQL 数据存储,那么肯定所有人都需要一个帐户,那么问题是什么?请详细说明您的问题。
  • 抱歉错字和信息不足。我的网站可以为会员提供博客网站,他们可以使用自己的域名并指向我的网站。就像 blogger.com 一样。我想在这些博客之间对成员进行交叉身份验证。我的意思是他们只需要登录一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多