【发布时间】:2020-07-31 05:39:52
【问题描述】:
我有一个使用 okta 服务进行身份验证的 nodejs 应用程序。
我在我的电脑上本地测试的应用程序运行正常,它开始监听端口 3000:
const port = process.env.PORT || 3000
app.listen(port, () => console.log(`App listening on port ${port}`))
到目前为止一切顺利。
下一步我在 heroku 上部署了该应用程序,但是 - 不幸的是 - 它不起作用...
我检查了日志文件,发现了罪魁祸首:似乎 heroku 忽略了我在 .env 文件中设置为 3000 的端口,它使用(随机?)端口值,例如 16709:
2020-04-17T09:51:40.261031+00:00 app[web.1]:应用监听端口 16709
这就解释了身份验证失败的原因。
正如我在 okta 设置中看到的,它肯定需要端口 3000:
Login redirect URIs : http://localhost:3000/authorization-code/callback
所以我被卡住了......我搜索了stackoverflow,我发现了这个:How login with okta oauth in new heroku app,但不幸的是没有答案:(
请问,有人知道如何缓解/解决 heroku 和 okta 之间的这个端口问题吗?
更新:
我尝试了下面的答案和 cmets 的建议,但它仍然不起作用...
我从 okta auth 得到的是:
“400 - 错误请求。您的请求导致错误。身份 提供者:未知。错误代码:invalid_request。”
这里有一些来自 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
【问题讨论】:
-
我已经用我得到的错误更新了我的问题,一些来自 heroku 的日志和登录验证码 sn-p。
-
也许您可以从 okta 日志中发布错误?这些对您的情况最有帮助。 Heroku 日志在这里没有多大帮助,因为问题似乎在 auth 方面,即来自 okta。