跨域HTTP POST - 单点登录

时间:2013-04-17 17:40:05

标签: c# javascript asp.net cross-domain http-post

我一直试图在几天内找到问题的解决方案。

搜索出来给了我很多选择,其中没有一个我可以适应我的情景。

我有一个Web应用程序(C#ASP.NET),它必须将一些数据发布到另一个域中的另一个应用程序,作为SSO。 (使用带有重定向的SSL的HTTP POST到另一个域)

另一个域上的应用程序期望一个帖子包含一些JSON格式的纯文本数据,然后将用户重定向到另一个页面。

我无法使用表单提交,因为它将表单本身发送到应用程序,而不仅仅是我的数据,因此它无法读取我发送的数据。

XMLHttpRequest确实有效,但是,作为ajax调用,它不会重定向用户,我无法从响应中取回Location头。

我无法控制其他应用程序,并且我只允许使用我们的库,因此JQuery不是一个选项。

有谁知道我怎么能实现这个目标?服务器端或客户端。

1 个答案:

答案 0 :(得分:1)

大多数基于POST的跨域SSO方案的工作方式如下:

  • 新的未经身份验证的浏览器转到服务提供商
  • 服务提供商使用特定查询字符串重定向到SSO URL(通常包含服务提供商签署的小请求,以将此服务提供商标识为SSO门)
  • 浏览器执行GET到SSO网关URL
  • SSO网关使用一些交互式登录UI进行响应
  • 浏览器获取用户的名称/密码输入并将其发布到SSO网关
  • SSO网关使用包含身份验证响应数据的小Javascript验证并回复HTML页面
  • Javascript反过来指示浏览器将身份验证响应数据POST回服务提供商URL

请在此处阅读:http://en.wikipedia.org/wiki/SAML_2.0#HTTP_POST_Binding 阅读SAML2,OAuth和WS-Federation规范也将大大受益。