【问题标题】:OAuth2 Implicit Grant with Ajax使用 Ajax 的 OAuth2 隐式授权
【发布时间】:2016-12-23 07:18:30
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您似乎不是在问一个实际的问题。

标签: javascript angularjs ajax oauth


【解决方案1】:

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)}

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 2018-10-28
    • 2023-04-11
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多