gpt4 book ai didi

javascript - 使用 Ajax 的 OAuth2 隐式授权

转载 作者:行者123 更新时间:2023-12-03 13:08:20 24 4
gpt4 key购买 nike

我正在使用 Angular 在 Javascript 应用程序中实现 OAuth 的隐式授权类型。我想使用 AJAX 请求请求 token 。当我向我的 OAuth 服务器发出请求时,它以 302location header 进行响应。根据规范,该位置是我配置的重定向 URL,带有包含访问 token 的哈希片段。

我的问题是,如果它是一个 ajax 请求,我无法读取哈希片段,因为 XmlHttpRequest 自动跟随位置 header 。我似乎无法获得有关初始响应的任何信息(状态为 302 且具有位置 header 的信息。)如果有某种方法可以拦截该响应并读出位置 header , 我会被设置。

我想请求 token 在幕后发生,而用户甚至不知道它正在发生。 (也就是说,没有浏览器的 URL 跳来跳去。)我还应该提到我在 SSO 可用的环境中工作,并且用户很可能已经通过 SSO 进行了身份验证。只要我的 OAuth 服务器检测到 SSO cookie,它就会知道用户之前已经过身份验证,并且只需为此应用程序颁发 token ,而无需重定向到登录页面。

有没有办法读取第一个响应的位置 header ,或者读取重定向到的 URL?看来xhr本身也是费尽心机来防止这种情况,所以我也想知道这是什么原因?

最佳答案

oauth Implicit Grant 通常会打开服务登录窗口,这样用户就可以接受服务集成商,然后提供他们的登录凭据。使用 JavaScript,您可以通过实现类似于以下的代码来读取哈希:

var browserRef = window.open(add your URL here, '_blank','location=yes,clearsessioncache=yes,clearcache=yes');
browserRef.addEventListener ('loadstart', function(event) { add code to read the hash)}

关于javascript - 使用 Ajax 的 OAuth2 隐式授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394042/

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