AD FS 2.0身份验证和AJAX

Saa*_*per 15 javascript ajax jquery adfs2.0

我有一个网站试图在另一个网站上调用MVC控制器操作.这些站点都设置为AD FS 2.0中的信赖方信任.在两个站点之间的浏览器窗口中打开页面时,一切都经过身份验证和正常工作.但是,当尝试使用jQuery AJAX方法从JavaScript调用控制器操作时,它总是失败.这是我正在尝试做的代码片段......

$.ajax({
  url: "relyingPartySite/Controller/Action",
  data: { foobar },
  dataType: "json",
  type: "POST",
  async: false,
  cache: false,
  success: function (data) {
    // do something here
  },
  error: function (data, status) {
    alert(status);
  }
});
Run Code Online (Sandbox Code Playgroud)

问题是AD FS使用JavaScript将隐藏的html表单发布到依赖方.当使用Fiddler进行跟踪时,我可以看到它到达AD FS站点并返回此html表单,该表单应该发布并重定向到经过身份验证的控制器操作.问题是这个表单由于ajax请求而返回,并且显然会因解析器错误而失败,因为ajax请求需要来自控制器操作的json.看起来这是一个常见的场景,那么从AJAX与AD FS进行通信并处理此重定向的正确方法是什么?

Juz*_*Ali 0

首先,您说您正在尝试对另一个网站进行ajax调用,您的调用是否符合网络浏览器的同源策略?如果是这样,那么您期望 html 作为服务器的响应,将datatypeajax 调用更改为dataType: "html",然后将表单插入到 DOM 中。