Strongloop Passport.js 身份验证 - "Failed to obtain access token"
Strongloop Passport.js authentication - "Failed to obtain access token"
我正在尝试编写一个 Express/Passport 应用程序来验证 Github 企业服务器。这需要手动编辑护照的 github 策略以指向私有企业 API 端点。没什么大不了的。
我正在使用 Strongloop 构建应用程序,所以我正在使用 strongloop-passport-component
集成。
据我所知,应用程序配置正确,但在重定向时,我收到以下错误消息:
Loopback 500 InternalOAuthError: Failed to obtain access token at
Strategy.OAuth2Strategy._createOAuthError
(/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/lib/strategy.js:370:17)
at
/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/lib/strategy.js:166:45
at
/Users/Tom/Desktop/soundoff/node_modules/passport-github/lib/strategy.js:75:25
at
/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:177:18
at ClientRequest.
(/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:148:5)
at emitOne (events.js:90:13) at ClientRequest.emit
(events.js:182:7) at TLSSocket.socketErrorListener
(_http_client.js:262:9) at emitOne (events.js:90:13) at
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 找不到访问令牌的原因是什么?不是在url?code=
吗?
如果临时令牌(此处为dceef2ffe07b5dbfa194
)无效,则可能无法获取访问令牌。
可能在您修改后的 github 策略中,OAuth 流程的第二阶段将临时令牌交换为最终令牌,配置不正确,很可能请求主 github api 而不是您的企业 github api 进行令牌交换
不幸的是,解决方案是不使用 strongloop-passport-component。开发人员一直没有响应,看起来这不会被修复。
我正在尝试编写一个 Express/Passport 应用程序来验证 Github 企业服务器。这需要手动编辑护照的 github 策略以指向私有企业 API 端点。没什么大不了的。
我正在使用 Strongloop 构建应用程序,所以我正在使用 strongloop-passport-component
集成。
据我所知,应用程序配置正确,但在重定向时,我收到以下错误消息:
Loopback 500 InternalOAuthError: Failed to obtain access token at Strategy.OAuth2Strategy._createOAuthError (/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/lib/strategy.js:370:17) at /Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/lib/strategy.js:166:45 at /Users/Tom/Desktop/soundoff/node_modules/passport-github/lib/strategy.js:75:25 at /Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:177:18 at ClientRequest. (/Users/Tom/Desktop/soundoff/node_modules/passport-github/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:148:5) at emitOne (events.js:90:13) at ClientRequest.emit (events.js:182:7) at TLSSocket.socketErrorListener (_http_client.js:262:9) at emitOne (events.js:90:13) at 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 找不到访问令牌的原因是什么?不是在url?code=
吗?
如果临时令牌(此处为dceef2ffe07b5dbfa194
)无效,则可能无法获取访问令牌。
可能在您修改后的 github 策略中,OAuth 流程的第二阶段将临时令牌交换为最终令牌,配置不正确,很可能请求主 github api 而不是您的企业 github api 进行令牌交换
不幸的是,解决方案是不使用 strongloop-passport-component。开发人员一直没有响应,看起来这不会被修复。