OAuth2 Implicit Grant with Ajax



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

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

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

有没有办法读取第一个响应的位置标头,或读取重定向到的 URL? 似乎 xhr 本身竭尽全力防止这种情况,所以我也想知道这是什么原因?

oauth 隐式授予通常会打开服务登录窗口,以便用户可以接受服务集成商,然后提供其登录凭据。 使用 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)}

最新更新