gpt4 book ai didi

ajax - 使用 SSO : Ajax request

转载 作者:行者123 更新时间:2023-12-03 03:15:25 26 4
gpt4 key购买 nike

我有一个 Web 应用程序和 API 服务器,该 Web 应用程序始终通过 AJAX 使用 API,除了少数情况下。

当我为两者启用 SSO 时,我面临着众所周知的问题 - 如何在 AJAX 中处理重定向。

(更多细节:Azure 要求用户只能通过其登录页面登录 AD - 因此理想情况下,当访问网页或 api 端点时,他们应该被重定向到 azure 登录页面。由于 HTTP302 重定向不与 XmlHTTP 配合不好,通过 AJAX 访问 API 时用户不会被重定向到身份验证页面)

我有几个选项来解决这个问题:

  1. 当 Web 应用程序经过身份验证时,将重定向到预定义的 api 端点(例如:“api/login”),这将负责 api 身份验证,完成后,将其重定向回 Web 应用程序。因此用户将以这种方式重定向:

    web -> azure login -> web -> api -> azure login (auto login) -> api -> web

  2. 在 iframe(或图像)中加载 api 端点并等待加载完成事件

  3. 仅对 Web 应用程序进行身份验证 - 从 sso 上下文中删除 api,并找到其他方法在 API 端识别和验证 Web 请求( token 、cookie)

请帮我选择一个合适的图案。

最佳答案

AJAX 自动遵循重定向:

您需要区分来自服务的回复和登录页面,登录页面是在 AJAX 遵循重定向后获得的(但 not with safari+cors! )。例如,可以通过检查响应主体内的字符串来完成检测。检测到后,只需通过 document.location=<login-page-url> 将用户重定向到登录页面.

另一种选择是使用“授权”HTTP header 内的 token 而不是 SSO 来保护后端服务: https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

关于ajax - 使用 SSO : Ajax request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28062638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com