Okta-在Express应用程序中获取未知身份验证策略“ oidc”

问题描述

我已经完全按照文档(https://developer.okta.com/blog/2019/05/31/simple-auth-express-fifteen-minutes)在Expressjs应用中设置Okta了,但是每当我进入http:// localhost:3000 / login时,都会出现此错误

Error: UnkNown authentication strategy "oidc"
    at attempt (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/passport/lib/middleware/authenticate.js:190:39)
    at authenticate (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/passport/lib/middleware/authenticate.js:367:7)
    at /Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/@okta/oidc-middleware/src/connectUtil.js:80:28
    at Layer.handle [as handle_request] (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/express/lib/router/index.js:317:13)
    at /Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/express/lib/router/index.js:335:12)
    at next (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/express/lib/router/index.js:275:10)
    at urlencodedParser (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/body-parser/lib/types/urlencoded.js:91:7)
    at Layer.handle [as handle_request] (/Users/student/Projects/week_10/ProcessReviewSite/api/node_modules/express/lib/router/layer.js:95:5)

解决方法

我无法发表评论,但是我希望可以有所帮助。 使用您链接的文章中引用的仓库中的代码,我没有错误。 供参考,here是回购的链接。

请确保使用npm install安装所有软件包,并使用所有环境变量的正确值填充.env文件,这些值是: HOST_URL OKTA_ORG_URL APP_SECRET OKTA_CLIENT_ID OKTA_CLIENT_SECRET OKTA_TOKEN

还要确保Okta上的配置正确-本文提供了应该在其中进行配置的分步指南。

我在不同的上下文中偶然发现了相同的错误,但是示例代码可以正常工作,我能够成功登录。

,

我在我的本地工作。这是我的 .env(正确编辑)

OKTA_ORG_URL=https://dev-69099605.okta.com
APP_SECRET=<application / session secret>
OKTA_CLIENT_ID=<client ID>
OKTA_CLIENT_SECRET=<client secret>
HOST_URL=http://localhost:8080

然后在 Okta 中,我按照 here 的描述创建了一个应用程序。我在“用户同意”下禁用了“需要同意”,并在“登录”下添加了 http://localhost:8080/authorization-code/callback 作为登录重定向 URI。我还有 http://localhost:8080/authorization-code/callback 用于“启动登录 URI”。它适用于我的本地。它在 Lambda 中不起作用,但这是另一回事。 :)