【问题标题】:How to share auth0 authentication information between 2 different APIs?如何在 2 个不同的 API 之间共享 auth0 身份验证信息?
【发布时间】:2021-09-24 10:27:04
【问题描述】:

API 和微服务领域相当新。

我正在使用 auth0 进行身份验证。

我有一个 convert express API POST 端点,它仅在用户通过身份验证时才有效,但是对于前端 ->(主页、登录按钮、从 auth0 回调登录、重定向)我使用不同的api 首页 express api.

用户从主页 api 登录后,用户尝试从他的个人资料仪表板发送发布请求以转换 API 端点,这不起作用并抛出错误 check.state argument is missing

我如何确定一个 API 是否进行了身份验证,该身份验证信息应该与另一个需要身份验证的 API 端点共享?

app.use(‘/authUrls’,requiresAuth(),authUrlsRouter)   //convert api post request

【问题讨论】:

  • 改用中间件。
  • 您能否详细说明中间件如何解决我的问题,请参阅我无法更改我的身份验证策略(auth0)API 1 身份验证-> 发布-> API 2 endooint(需要身份验证)这是我的系统现在

标签: javascript express aws-lambda aws-api-gateway auth0


【解决方案1】:

这可能是一个假设,但您似乎正在使用 Node.js 创建一个常规的 Web 应用程序,并且您想要的是每个会话的身份验证,而不是每个 API 端点的身份验证。这个来自 Auth0 的 quickstart 很好地完成了它。它使用Passport.js和express-session来提供中间件。

根据tutorial

在典型的 Web 应用程序中,用于验证用户身份的凭据仅在登录请求期间传输。如果身份验证成功,则通过用户浏览器中设置的 cookie 建立和维护会话。每个后续请求不包含凭据,而是包含标识会话的唯一 cookie。

工作原理:login api 被调用并成功完成时,用户的身份验证存储在该会话中。每当调用需要经过身份验证的用户的其他 API 时,您只需包含 middleware(在快速入门中称为“安全”):它将查询相应会话的数据并根据用户的身份验证状态允许/禁止。

例如,convert 端点:
router.post('/convert', secured(), this.convertfunction);

还有一个非身份验证端点:
router.get('/other', this.otherfunction);

完整的教程提供了更多信息。但这说明了中间件将如何解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2022-01-19
    相关资源
    最近更新 更多