在Safari中处理成功的OpenID Connect授权响应< = 9

时间:2017-01-08 01:48:31

标签: aurelia aurelia-router

由于我们使用OpenID Connect,我们需要Aurelia路由器来处理OpenID Connect授权响应,如下所示:

https://client.example.org/signin-oidc#
    access_token=SlAV32hkKG
    &token_type=bearer
    &id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso
    &expires_in=3600
    &state=af0ifjsldkj

为了做到这一点,我们设置了像这样的推送状态的路由器。

// switch from hash (#) to slash (/) navigation
routerConfig.options.pushState = true;

这在大多数Web浏览器中都能成功运行。 Aurelia路由器处理/ signin-oidc路由,客户端代码可以访问该片段。好。

在Yosemite上的Safari< = 9.0中存在问题,因为WebKit bug #24701删除了重定向上的片段,并且成功的OpenID Connect授权响应是重定向(302 Found)。结果:浏览器仅发送以下缺少片段的内容。不好。

https://client.example.org/signin-oidc

解决方法是在哈希前面加上正斜杠:

https://client.example.org/signin-oidc/#
    access_token=SlAV32hkKG
    &token_type=bearer
    &id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso
    &expires_in=3600
    &state=af0ifjsldkj

解决了WebKit错误,Yosemite上的Safari< = 9包含了该片段。

解决了吗?不。

解决方法打破了Aurelia路由器,该路由器无法再理解URI的/#部分。我们如何设置Aurelia路由器以处理来自OpenID Connect授权服务器的成功授权响应?

1 个答案:

答案 0 :(得分:2)

我们的官方支持政策是我们只支持最新版本的常绿浏览器(IE不是常青树,所以我们支持IE9 +)。如果可以创建一个不会影响性能或破坏当前浏览器的修复程序,我们将采用PR。