2009-12-18 50 views
0

我的网站可以从多个域(我自己的博客引擎)访问。那么,我如何交叉认证?ASP.NET - 针对多个域的验证

我正在使用:IIS7,C#,asp.net会员,表单身份验证。

+0

您是试图同时验证所有域还是允许来自多个域的用户? – GrayWizardx 2009-12-18 17:04:42

+0

对不起,错字。域名,我的意思是网站域名。 – complez 2009-12-18 17:14:25

+0

是的,那扔了我,和你的'交叉认证'。请参阅我答案的第二部分。 – 2009-12-18 17:16:41

回答

2

如果您使用的是Active Directory(假设您指的是域),则可以简单地配置多个ActiveDirectoryMembershipProvider部分并使用asp:Login控制模板,为要验证的域添加下拉列表,然后打开Login控件的OnAuthenticate事件,请设置所选的AD成员资格提供程序。

对于不同的提供商,如SQL Server会员提供商,我不知道我明白了问题所在。你能详细说明吗?

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

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

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

Crikey,这是一个说“不,你不能 - 安全”的很长一段路。

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

+0

他说这是窗体身份验证... – 2009-12-18 16:58:36

+0

是的,ActiveDirectoryMembershipProvider只是插入到Forms Auth的另一个成员资格提供程序。 – 2009-12-18 17:00:30

+0

@Wim Hollebrandse:我正在使用SqlMembershipProvider? – complez 2009-12-18 17:04:56