【问题标题】:how to handle SSO redirect in Vaadin 14如何在 Vaadin 14 中处理 SSO 重定向
【发布时间】:2020-06-08 04:06:29
【问题描述】:

我们有一个 Vaadin 14 (Flow) 应用程序,它前面有一个 Apache 反向代理,它与 Gluu 集成以进行身份​​验证。

当会话不再有效时,无论是由于会话超时还是在另一个浏览器选项卡/窗口中注销,Apache 服务器将向 Gluu 服务器发送重定向以让用户再次登录。 但是,当内部 Vaadin XHR 调用(Ajax 请求)发生这种情况时,Vaadin 似乎不能很好地处理此响应,并显示“来自服务器的无效 JSON 响应”错误。

我想要的是让 Vaadin 将浏览器位置设置为重定向中指示的 URL,或者刷新页面(可能带有确认消息),在这种情况下浏览器将很好地遵循重定向。如何做到这一点,或者还有哪些其他选择?

【问题讨论】:

    标签: vaadin vaadin-flow vaadin10 vaadin14


    【解决方案1】:

    如果无法将 XHR 响应解析为 JSON,Vaadin 将在响应文本中的任意位置查找 Vaadin-Refresh 字符串。如果它存在,那么 Vaadin 将重新加载页面而不是显示错误消息。或者,您可以使用 Vaadin-Refresh: <url> 格式,这将使 Vaadin 重定向到 <url>,而不是重新加载当前位置。

    您可以配置 Gluu 以包含此字符串,例如用户需要登录时发送的响应中的 HTML 注释。

    【讨论】:

    • 谢谢,我试试这个。 Vaadin 是否有理由在响应中检测到标准 30X HTTP 状态代码和 Location: 标头而不需要此自定义解决方案?
    • 浏览器自动遵循任何常规的 30 倍重定向,而不直接涉及调用者(例如 Vaadin)。此外,理论上 30 倍重定向可能仍会导致包含 Vaadin 期望的 JSON 的响应,而 Vaadin-Refresh 标记明确指示应重新加载页面而不是尝试解释响应。
    • 我明白了。从技术上讲,这可以通过在最近的浏览器中将 request option in the Fetch API 设置为值 manual 来实现(可能是 Vaadin 15+?)。然后可以将 Vaadin 配置为设置重定向到特定 URL 的浏览器位置(并简单地遵循可能确实导致预期 JSON 的其他重定向)。这将涵盖 SSO 的登录页面不受应用程序开发人员直接控制的情况。
    • 配置特定重定向 URL 应该导致顶级导航的好主意!我也意识到响应的内容类型可以作为一个指标。此外,可以通过查找responseURL 中的更改来检测(但不能阻止或拦截)XHR 重定向。我在github.com/vaadin/flow/issues/7679 中记录了这个想法。
    • 我想将此Vaadin-Refresh: <url> 用于另一个用例,但似乎请求被浏览器(至少是 Chrome)取消了,即使它是相同的来源。这些天似乎只有基本的Vaadin-Refresh 可以正常工作(至少使用 Vaadin 14)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2021-09-13
    • 2020-03-16
    • 2014-09-03
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多