【问题标题】:Handle a successful OpenID Connect authorization response in Safari <=9在 Safari <=9 中处理成功的 OpenID Connect 授权响应
【发布时间】:2017-01-08 12:06:40
【问题描述】:

由于我们使用的是 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;

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

然而,Yosemite 上的 Safari WebKit bug #24701 删除了重定向片段,并且成功的 OpenID Connect 授权响应是重定向(找到 302)。结果:浏览器只发送以下内容,缺少片段。不好。

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

解决了吗?没有。

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

【问题讨论】:

    标签: aurelia


    【解决方案1】:

    我们的官方支持政策是我们只支持最新版本的常青浏览器(IE 不是常青,所以我们支持 IE9+)。如果可以创建不损害性能或破坏当前浏览器的修复程序,我们将进行 PR。

    【讨论】:

    • 听起来答案是分叉 Aurelia 路由器,如果我们可以让路由器在我们的情况下工作,那么将分叉变成 PR。
    • Yosemite 的 Safari 最新版本是 10。
    • 感谢您让我知道这一点。事实证明,该错误也会影响 Safari 10:bugs.webkit.org/show_bug.cgi?id=158420 使用 /# 模式显然可以解决它。
    • 如果它影响 10,那么我建议在我们的路由器回购中提出问题。干杯!
    猜你喜欢
    • 2018-12-19
    • 2023-03-05
    • 2018-05-20
    • 1970-01-01
    • 2017-05-05
    • 2015-12-11
    • 1970-01-01
    • 2014-01-11
    • 2023-01-12
    相关资源
    最近更新 更多