Asp.net 如何在认证后将客户端重定向到网站?

Asp.net 如何在认证后将客户端重定向到网站?,asp.net,redirect,Asp.net,Redirect,我必须在两个不同公司托管的两个现有internet应用程序之间实现一个简单的单点登录(SSO)解决方案 它应该做什么: 用户使用其用户名和密码登录到应用程序A 用户最终单击应用程序a中的按钮以启动应用程序B 此按钮实际上是安装在应用程序a和应用程序B之间的“facade”(ASP.NET页面)的链接 门面检索令牌(由调用方包含在URL中)并使用该令牌调用应用程序a的web服务以获取用户的电子邮件。此电子邮件包含在回复中 facade然后从本地服务器检索用户的用户/密码 数据库并将其发布到应用程序

我必须在两个不同公司托管的两个现有internet应用程序之间实现一个简单的单点登录(SSO)解决方案

它应该做什么:

  • 用户使用其用户名和密码登录到应用程序A
  • 用户最终单击应用程序a中的按钮以启动应用程序B
  • 此按钮实际上是安装在应用程序a和应用程序B之间的“facade”(ASP.NET页面)的链接
  • 门面检索令牌(由调用方包含在URL中)并使用该令牌调用应用程序a的web服务以获取用户的电子邮件。此电子邮件包含在回复中
  • facade然后从本地服务器检索用户的用户/密码 数据库并将其发布到应用程序B的登录页面
  • facade然后将调用者重定向到应用程序B
  • 问题是,我不知道如何实施最后一步。对帖子的响应(步骤5)是欢迎页面和cookie。我尝试将此响应(HttpWebResponse)复制到facade的
    响应
    ,但用户可以看到Welcom页面内容,但没有重定向

    HttpWebResponse applicationBResponse = PostApplicationB();
    var reader = new treamReader(applicationBResponse.GetResponseStream());
    string temp = reader.ReadToEnd();
    reader.Close(); 
    Response.Write(temp);
    

    想知道我应该如何实现这个重定向?< /p> < p>这是使用Windows身份基础来实现所谓的“强>被动联邦< /强>”的一个很好的用例。身份联合(Identity Federation):由一个集中的服务或应用程序负责管理用户的身份,验证用户的凭据。然后,依赖应用程序可以与身份服务建立信任关系,这样它们就不再关心用户的身份验证方式。这种方法的一个好处是,如果出于某种原因您决定更改身份验证机制,例如从密码移动到客户端证书,那么您的应用程序根本不需要更改。只要他们信任的身份识别服务说用户是好的,他们就可以像往常一样继续开车

    通过使用WIF,您尝试编写的几乎所有管道代码都将为您处理,并且可能会立即解决大多数场景。它支持许多不同的协议,具有高度的灵活性和可配置性,并且如果您有默认场景中未包含的自定义需求,则可以轻松地进行扩展

    如果你正在寻找一个好的开源身份识别服务,那就去看看吧。您可以在几分钟内启动并运行,并且可以轻松定制以满足您的组织和需求。我们在组织中使用Identity Server处理Web和WPF应用程序的SSO,并取得了巨大成功


    要想了解身份联合的入门知识,请访问MSDN。

    此方案唯一有效的方法是去掉外观。相反,应用程序A应该检索用户名和密码,并在表单中包含的隐藏字段中呈现给页面。页面应以一段javascript结束,以将表单提交给应用程序B。应用程序B将使用欢迎页面以及任何会话cookie直接回复浏览器

    如果使用facade,Cookie将不会传播,最终用户浏览器将无法访问站点。即使您修改外观以传递cookies,它们也将位于错误的域中


    另外,我必须指出,从安全角度来看,这是一个非常糟糕的设计

    谢谢你的评论。这确实是一个糟糕的设计,我们将改变它。似乎我们可以控制应用程序A和应用程序B。我认为您的解决方案是最简单的。非常感谢!WIF、被动联合和身份服务器对我来说是新的。干杯