gpt4 book ai didi

oauth - 使用客户端、服务器、数据库和 Auth0 的一次性密码身份验证流程

转载 作者:行者123 更新时间:2023-12-04 08:56:21 25 4
gpt4 key购买 nike

我正在尝试使用 Auth0(使用 Twillio 与 SMS 的无密码连接)通过 SMS 实现 OTP 身份验证流程。
我们有一个移动应用程序、一个 API、一个数据库,并且我们使用 Auth0。
脚步:

  • 用户输入电话号码。
  • 客户端是否直接将电话号码发送给 Auth0?
  • 或者客户端是否将电话号码发送到调用 Auth0 (Twillio) 的 API?
  • 用户通过短信接收验证码
  • 客户端是否将代码发送到 Auth0?
  • 或者客户端是否将代码发送到 API,然后将其发送到 Auth0?
  • 用户输入代码并收到一个access_token、一个id_token和一个refresh_token
  • Auth0 是否直接与 API 和客户端分别对话?
  • 客户端是否应该接收这些 token 并将其发送到后端?
  • 或者 API 是否应该直接接收这些并仅将 id_token 发送回客户端?
  • 用户访问数据库中的资源。
  • id_tokem、access_token和refresh_token是否需要保存在数据库中?

  • 这些是我的一些问题,但我对使用 OTP 的一般身份验证流程更加困惑。

    最佳答案

    Auth0 可帮助您处理身份验证过程,您的 API 需要确定每个请求的用户可以访问和不能访问的内容。此过程称为 | 授权 .换句话说,身份验证从客户端开始,而 授权在服务器端启动。
    身份验证(客户端)
    在您的示例中,客户端直接将电话号码发送到 Auth0,Auth0(幕后的 Twillio)发回代码。
    客户端将凭据(电话号码和代码)发送回验证它们的 Auth0。一旦代码成功,Auth0 会将访问信息封装在一个名为 的东西中。访问 token (JWT- JSON Web token )和身份信息,称为 身份 token 。 更多关于 token 的信息在这里 https://auth0.com/docs/tokens
    移动应用程序在本地存储访问 token 和刷新 token 。
    授权(后端)
    当用户需要向 protected API 端点发出请求时,客户端应用程序必须将访问 token 与 API 请求一起发送,然后执行授权过程。 access_token 必须在它向 protected 端点发出的每个请求的授权 header 中。
    服务器验证访问 token 。如果 access_token 无效,请使用刷新 token 获取额外的访问 token 。如果有效,则服务器确定 token 持有者是否可以使用 token 中的信息访问所请求的端点。
    您的服务器(问题中的第 3 点)需要很少的东西来启动授权过程。您必须使用 JWT 策略验证访问 token 。如果您使用的是 nodejs,有一个名为 Passport 的好模块可以帮助您。
    要配置 JWT 策略,您需要来自 Auth0 的两个值: Auth0 颁发者 URL 授权观众。 您将通过在 Auth0 仪表板中创建 api 来获取这些值。
    这意味着 Passport 验证全部由 Auth0 在 Auth0 仪表板中创建的租户 (api) 中处理。 Auth0 确定登录用户的身份,然后在有效负载对象中传递有关用户的数据,您可以通过 Controller 和中间件在整个请求-响应周期中访问该数据。
    您 protected 端点,例如 /account如果 access_token 无效,则会自动调用您的 JwtStrategy 配置逻辑并阻止请求。
    这篇文章帮助我理解了我在这里引用了很多的 OAuth 流程 :) https://auth0.com/blog/developing-a-secure-api-with-nestjs-getting-started/

    关于oauth - 使用客户端、服务器、数据库和 Auth0 的一次性密码身份验证流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63812701/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com