Node.js 如何解决heroku和okta之间的港口问题?
我有一个nodejs应用程序,它使用okta服务进行身份验证 我在pc上本地测试的应用程序运行正常,它在端口3000上开始侦听:Node.js 如何解决heroku和okta之间的港口问题?,node.js,heroku,port,okta,Node.js,Heroku,Port,Okta,我有一个nodejs应用程序,它使用okta服务进行身份验证 我在pc上本地测试的应用程序运行正常,它在端口3000上开始侦听: const port = process.env.PORT || 3000 app.listen(port, () => console.log(`App listening on port ${port}`)) Login redirect URIs : http://localhost:3000/authorization-code/callback
const port = process.env.PORT || 3000
app.listen(port, () => console.log(`App listening on port ${port}`))
Login redirect URIs : http://localhost:3000/authorization-code/callback
到目前为止还不错。下一步,我在heroku上部署了该应用程序,但不幸的是,它无法工作…
我检查了日志文件,发现了罪魁祸首:heroku似乎忽略了我在.env文件中设置为3000的端口,它使用了一个(随机?)端口值,例如16709: 2020-04-17T09:51:40.261031+00:00应用程序[web.1]:应用程序监听端口 16709 这就解释了身份验证失败的原因。
正如我在okta设置中看到的,它肯定希望端口3000:
const port = process.env.PORT || 3000
app.listen(port, () => console.log(`App listening on port ${port}`))
Login redirect URIs : http://localhost:3000/authorization-code/callback
所以我被卡住了。。。我搜索了stackoverflow,发现了以下内容:,但不幸的是没有答案:(
请问,有人知道如何缓解/解决heroku和okta之间的端口问题吗
更新:
我尝试了下面答案和评论中的建议,但仍然不起作用…
我从okta auth得到的是: “400-请求错误。您的请求导致错误。Identityy” 提供程序:未知。错误代码:无效的\u请求。“ 以下是okta的一些日志: 结果
Reason mismatched_redirect_uri
Result FAILURE
严重性警告系统
DebugContext
DebugData
AuthCode <removed by me>
AuthorizationServer <removed by me>
AuthorizationServerName default
ClientAuthType client_secret_basic
GrantType authorization_code
GrantedScopes
RedirectUri https://my_app.herokuapp.com//authorization-code/callback
RequestId <removed by me>
RequestUri /oauth2/default/v1/token
RequestedScopes
ThreatSuspected false
Url /oauth2/default/v1/token?
LegacyEventType app.oauth2.as.token.grant_failure
调试上下文
调试数据
身份代码
授权服务器
AuthorizationServerName默认值
ClientAuthType客户端\u机密\u基本
GrantType授权代码
授权示波器
重定向URIhttps://my_app.herokuapp.com//authorization-code/callback
请求ID
RequestUri/oauth2/default/v1/token
请求范围
恐吓怀疑虚假
Url/oauth2/default/v1/token?
LegacyEventType app.oauth2.as.token.grant\u失败
app Heroku在内部设置一个随机端口,但在标准https端口(443)上向公众公开您的应用。因此,如果您在Heroku上有一个名为:nodejs-okta的应用,则可公开访问的url为: 您需要在okta应用程序设置中将此url列入白名单,以便重定向正常工作:
注意:我在Okta的开发者宣传团队工作,app Heroku在内部设置了一个随机端口,但在标准https端口(443)上向公众公开了你的应用。因此,如果你在Heroku上有一个名为:nodejs-Okta的应用,那么公众可访问的url将是: 您需要在okta应用程序设置中将此url列入白名单,以便重定向正常工作:
注意:我在Okta的开发者宣传团队工作好吧,通过检查您的Okta日志,您的重定向URL中似乎有一个额外的“/”。
这无疑是失败的主要原因“不匹配的\u重定向\u uri” 请更改此项(注意:授权代码前的双斜杠): 使用此选项(注意:授权代码前的单斜杠): 在上述更正之后,只需尝试重新执行所有测试(登录、验证等)。
我99%确信这将解决您的问题。好吧,通过检查您的okta日志,您的重定向URL中似乎有一个额外的“/”。
这无疑是失败的主要原因“不匹配的\u重定向\u uri” 请更改此项(注意:授权代码前的双斜杠): 使用此选项(注意:授权代码前的单斜杠): 在上述更正之后,只需尝试重新执行所有测试(登录、验证等)。
我99%相信这会解决您的问题。谢谢您的回答,但我找不到在开发者控制台的白名单中设置URL的菜单的确切位置…?从Okta开发者控制台中,从菜单中选择
应用程序。单击您的OIDC应用程序并选择常规选项卡。单击编辑,然后单击n在页面的登录重定向URI
部分添加一个URI。HTH!哦,已经尝试过了,但不起作用。通过“白名单”我以为你指的是开发人员控制台中为URL白名单设计的菜单/功能…还有其他想法或我应该进一步研究什么吗?谢谢回答,但我找不到在开发人员控制台白名单中设置URL的菜单的确切位置…?从Okta开发人员控制台中,选择Applications
从菜单中。单击您的OIDC应用程序并选择常规
选项卡。单击编辑
,然后将URI添加到页面上的登录重定向URI
部分。HTH!哦,已经尝试过了,但不起作用。通过“白名单”我以为你指的是为开发控制台中的URL白名单设计的菜单/功能…还有其他想法或我应该进一步调查什么吗?我已经用我得到的错误、heroku的一些日志和登录验证代码片段更新了我的问题。也许你可以发布错误来自okta日志?这些对您的情况最有帮助。Heroku日志在这里没有多大帮助,因为问题似乎在身份验证方面,即来自okta。我已经用我得到的错误更新了我的问题,一些来自Heroku的日志和登录身份验证代码片段。也许您可以发布错误来自okta日志?这些对您的情况最有帮助。Heroku日志在这里没有多大帮助,因为问题似乎在授权方面,即来自okta。