【问题标题】:Strongloop Passport.js authentication - "Failed to obtain access token"Strongloop Passport.js 身份验证 - “获取访问令牌失败”
【发布时间】:2016-10-13 23:45:59
【问题描述】:

我正在尝试编写一个通过 Github Enterprise 服务器进行身份验证的 Express/Passport 应用程序。这需要手动编辑护照的 github 策略以指向私有企业 API 端点。没什么大不了的。

我正在使用 Strongloop 来构建应用程序,因此我正在使用 strongloop-passport-component 集成。

据我所知,应用程序配置正确,但在重定向时,我收到以下错误消息:

Loopback 500 InternalOAuthError: 获取访问令牌失败 Strategy.OAuth2Strategy._createOAuthError (/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/lib/strategy.js:370:17) 在 /Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/lib/strategy.js:166:45 在 /Users/Tom/Desktop/soundoff/node_modules/passport-github/lib/strategy.js:75:25 在 /Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:177:18 在客户端请求。 (/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:148:5) 在 ClientRequest.emit 的 emitOne (events.js:90:13) (events.js:182:7) 在 TLSSocket.socketErrorListener (_http_client.js:262:9) 在 emitOne (events.js:90:13) 在 TLSSocket.emit (events.js:182:7)

如果我查看 github 应用程序设置,我可以验证用户是否已成功通过应用程序进行身份验证。似乎无法将用户重定向到重定向 URI。显然它找不到访问令牌?

用户最终访问的 URL 类似于 http://0.0.0.0:3000/auth/github/callback?code=dceef2ffe07b5dbfa194 -- 但是,我希望他们最终访问 http://0.0.0.0:3000/auth/account

什么可能导致 Loopback 找不到访问令牌?网址里不是?code=吗?

【问题讨论】:

    标签: javascript node.js oauth passport.js loopbackjs


    【解决方案1】:

    不幸的是,解决方案是不使用 strongloop-passport-component。开发人员一直没有响应,并且看起来不会修复。

    【讨论】:

    • 您能否提供有关如何/在何处将护照插入环回的指导?即将做一些非常相似的事情,所以任何帮助表示赞赏
    【解决方案2】:

    如果临时令牌(此处为dceef2ffe07b5dbfa194)无效,则可能无法获取访问令牌。

    可能在您修改后的 github-strategy 中,将临时令牌交换为最终令牌的 OAuth 流程的第二阶段配置不正确,很可能请求主 github api 而不是您的企业 github api代币兑换

    【讨论】:

    • 嘿,感谢您的帮助...不过似乎不是这样。我已经更新了对 github 的所有引用以指向我的企业域。 :(
    • 好的,那么我建议不要使用 strongloop-passport-component。我遇到过类似的问题,不可靠的行为,而且它封装了护照这一事实使调试变得困难。此外,鉴于 github 存储库上的活动,该组件似乎没有得到很好的维护。直接使用护照 js 相当简单,让您了解幕后发生的事情。
    • 感谢@Overdrivr。我可能会这样做。很遗憾,因为我喜欢模块的设置方式,但如果它不起作用,它就不起作用!同时,我已经要求他们提供一个与 github 集成的演示,也许他们会在下线修复它。谢谢
    • 我有 exactly 与普通 express.js 相同的错误。 (但适用于环回 scratches head
    • 好的,我现在知道我做错了什么。仅供大家参考:首先,这个错误是旧代码产生的,使用新版本。只是使用较新的版本并不能解决我的问题,仔细检查 client-idclient-secret 让它神奇地工作! ;)
    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2015-05-10
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多