使用ADFS的Safari浏览器错误地处理SAML流程?

时间:2016-06-26 22:49:02

标签: ios safari saml adfs

以下是场景 - 我们为移动客户端启用了SSO,当他们希望使用SSO Auth进程时,我们生成了一个浏览器进程来处理SAML令牌生成过程。它一直运作良好,直到最近我们在客户使用ADFS并尝试从IOS客户端登录的特定情况下遇到问题。 IOS客户端默认使用Safari,因此这种情况下的两个玩家是Safari(Apple)和ADFS(Microsoft)

因此,序列首先浏览到一个URL(简化为https://sso.mycomp.com/!saml2/scg3/sp-sso/post),这是第一个作为SAML流程的一部分命中的URL。我从这个终点收到的HTML内容如下所示。 (为清楚起见,我删除了SAML数据)

<html xmlns="http://www.w3.org/1999/xhtml">
  <body onload="document.forms.samlform.submit()">
    <noscript><p><strong>Note:</strong> No JS, press the Continue to proceed.</p></noscript>
    <form id="samlform" action="https://intranet.mycomp.com/adfs/ls/" method="post">
    <div>
      <input type="hidden" name="SAMLRequest" value”***SAML_REQUEST_DATA_WAS_HERE***”>
      <input type="hidden" name="RelayState" value="default"/>
    </div>
    <noscript><div><input type="submit" value="Continue"/></div></noscript>
    </form>
  </body>
</html>

它基本上要求浏览器在浏览器加载HTML文档后对https://intranet.mycomp.com/adfs/ls/执行 发布 操作。正文 onLoad 标记(第2行)和表单 操作/方法 标记(第4行)在页面加载后定义要执行的操作 - 即发布到https://intranet.mycomp.com/adfs/ls/

但我从Safari和Chrome浏览器获得的回复却有所不同。在Chrome上,事情按预期工作,但在Safari上,SSO序列中断。

这是来自Chrome的查尔斯追踪。

Opration performed on Chrome

这是来自Safari的踪迹。使用相同的响应,它会执行“获取”

Operation performed on Safari

有没有办法克服这个问题或解决方法?为什么Safari不进行POST并尊重传递给它的HTML?

任何信息都会有所帮助。

版本: Chrome - 版本51.0.2704.103(64位) Safari - 版本9.1.1(11601.6.17) ADFS - 2.0

0 个答案:

没有答案