Asp.net 跨多个域单点登录,无需cookie

Asp.net 跨多个域单点登录,无需cookie,asp.net,authentication,single-sign-on,cookieless,Asp.net,Authentication,Single Sign On,Cookieless,我正在使用VisualStudio2008 我的要求是在不使用cookie的情况下跨多个域实现单点登录。这可能吗 例如,我有3个域托管在3个不同的系统中。 www.domain1.com www.domain2.com www.domain3.com 和cookies被禁用 我用cookies实现了单点登录,如果站点托管在一个系统中,那么它就可以工作了。但是如果cookies被禁用,它就不起作用了 我尝试了所有可能的谷歌搜索,但找不到任何有用的东西。请帮忙?我相信微软的单点登录有一个诀窍,可能会

我正在使用VisualStudio2008

我的要求是在不使用cookie的情况下跨多个域实现单点登录。这可能吗

例如,我有3个域托管在3个不同的系统中。 www.domain1.com www.domain2.com www.domain3.com

和cookies被禁用

我用cookies实现了单点登录,如果站点托管在一个系统中,那么它就可以工作了。但是如果cookies被禁用,它就不起作用了


我尝试了所有可能的谷歌搜索,但找不到任何有用的东西。请帮忙?

我相信微软的单点登录有一个诀窍,可能会奏效。我假设您将设置一个会话变量,而不是cookies,因此理论来自内存,类似于:

1-您指定一个域作为身份验证点,即,无论您在哪里登录,您都要确保www.domain1.com设置了一个会话变量,表示用户已通过身份验证。我想理想情况下,您可以将登录页面放在该域上,但如果没有,您可以通过使用http请求在domain1上设置初始登录身份验证来解决此问题

2-然后诀窍是在所有其他域1,2,3,4页面中有一个公共头,首先检查会话变量是否在相应的域上设置,如果没有设置,则重定向到域1,确定用户是否已登录-如果已登录,请获取登录详细信息-重定向回您通过传递登录详细信息而来的域,然后在您返回启动域后设置登录变量

我们在我使用的一个系统上有一个跨域身份验证-它是用cookie完成的,是一个噩梦-我们研究了重新设计这个系统的可能选项,这是从内存中找到的解决方案,似乎是最常见的-请注意,它仍然是基于cookie的,我认为,但它也应该与会话一起工作。

你应该这样做来看看这个时代。它基于基于身份和基于声明的身份模型;使这些类型的身份/身份验证和SSO场景更容易


在您的情况下,所有三个站点都将身份验证服务外包给受信任的安全令牌服务。如果要向Internet公开AD域标识,则此STS可以是ADF,否则为自定义WIF实现。您的网站将未经身份验证的访问者重定向到您的STS,STS通常以SAML的形式向他们提供安全令牌,网站可以接受SAML作为身份声明。

@Rob这是一种完美的方式。但问题是,对于每次登录页面加载,它都会使用response.redirect重定向3-4次。在开发环境中速度很快,需要在实时环境中进行检查。@Rob我跟踪了您,但无法使其工作。当我打开第一个域www.domain1.com时,设置了一个会话变量。当我打开第二个域www.domain2.com时,我会重定向到第一个域,并检查会话变量。这里的问题是,当从第二个域重定向时,它正在创建一个新会话。所以这不起作用。@Harsha-hmm。。。您正在执行重定向客户端吗?我对会话的经验是,它们非常持久,杀死会话通常包括杀死浏览器…@Rob im使用Response.Redirect,我还将使用什么???@Harsha-这也是我将要使用的。。。因此,作为另一个测试,如果您在域1上设置了一个会话,然后浏览到一个无关的域,然后不使用“后退”按钮向后浏览到域1,会话是否持续?也许可以检查一下课程是否没有烹饪……有趣。但是它不是opensource,在问题中是否指定了需要开源解决方案?是什么驱使你这样做的?这意味着Windows身份基础不是免费的工具,我们必须购买它。哈沙,我不知道你从哪里得到这个印象。WIF是免费下载和开发的。WIF运行时本身被归类为Windows更新,以加入.NET Framework的其他基础支柱—WCF、WPF、工作流和Cardspace。