Vue.js,Express Server,Okta,部署到 Heroku,implicit/callback 上的 404

Vue.js, Express Server, Okta, deploy to Heroku, 404 on implicit/callback

我有一个使用 vue-cli 构建并通过 Okta 授权的 Vue 应用程序。作为生产设置推送到 Heroku,但我有点想知道 Okta 是否不在免费增值级别上进行生产?

我是否在文档中遗漏了关于此的内容...

设置:

获得了一个 src 包含常用内容的目录 router/index.js 附加了 Okta 库:

Vue.use(Auth, {
  issuer: 'dev_url',
  client_id: 'some_string',
  redirect_uri: window.location.origin + '/implicit/callback',
  scope: 'openid profile email'
})

这是在路由数组中:

{
  path: '/implicit/callback',
  component: Auth.handleCallback()
},

src/ 中获得了 server.js 并获得了一些 jwt 验证和构建文件夹:

app.use(express.static(path.join(__dirname, "../dist")))
...
const oktaJwtVerifier = new OktaJwtVerifier({
    clientId: '<some_id>',
    issuer: '<some_url>'
})
...
app.get('/', authRequired(), (req, res, next) => {
    return res.sendFile(path.join(__dirname, '../dist/index.html'))
 })

这些看起来都不错,而且在本地主机上一切都很好用。使用 webpack-dev-server,但通过推送到 heroku,我在 implicit/callback 路由上得到 404...

这是脚本:

"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src test/unit",
    "build": "node build/build.js",
    "server": "node ./src/server",
    "start": "node ./src/server",
    "heroku-prebuild": "npm install && npm run build"
},

当构建完成并且所有的快乐时光都应该开始时,我点击登录,这个调用通过浏览器发送出去,这看起来有点奇怪:

https://<base_url>.herokuapp.com/implicit/callback#id_token=<huge_hashed_string>&token_type=Bearer&expires_in=3600&scope=openid+email+profile&state=<huge_hashed_string>

然后我们在 404 上崩溃并且没有发生身份验证。

如果你克隆它并且 npm install 你可以 运行 npm run devnpm start.

我尝试过的事情:

进行了很多路由操作,不确定还有什么问题,主要是因为老实说它在本地工作我想我要么在设置 Okta 应用程序时遗漏了一些东西,要么在文档中遗漏了一些东西'别让我运行这样。

我在仪表板设置中将生产 url 添加到 登录重定向 URI。并接受了基础 urls。有人对此有任何意见吗?

还不错。我找到的答案是您必须回到令牌存储并使用 OktaClient 而不是它们的隐式回调设置。按照 This tutorial.

解决了问题