首页 > 解决方案 > 如何在 Auth0 中创建程序化用户?

问题描述

我正在构建一个 CLI 工具,并希望为每个最终用户创建一个新的编程用户。

即 Joe Bloggs 使用用户名和密码进行注册,但也有一个可以在 CLI 中使用的 client_id 和 client_secret。

是否可以在 Auth0 中创建这种用户,如果可以,我如何以编程方式创建它?

看起来我可以使用通过 API 创建用户并执行以下操作:

axios({
  method: "POST",
  baseUrl: "https://<tenant>.eu.auth0.com,
  uri: "/api/v2/users",
  body: {
    "email": "john.doe@gmail.com",
    "phone_number": "+199999999999999",
    "user_metadata": {},
    "blocked": false,
    "email_verified": false,
    "phone_verified": false,
    "app_metadata": {},
    "given_name": "John",
    "family_name": "Doe",
    "name": "John Doe",
    "nickname": "Johnny",
    "picture": "https://secure.gravatar.com/avatar/15626c5e0c749cb912f9d1ad48dba440?s=480&r=pg&d=https%3A%2F%2Fssl.gstatic.com%2Fs2%2Fprofiles%2Fimages%2Fsilhouette80.png",
    "user_id": "abc",
    "connection": "Initial-Connection",
    "password": "secret",
    "verify_email": false,
    "username": "johndoe"
  }
})

但是,这似乎是为了创建最终用户:Create a new user for a given database or passwordless connection.与可以使用 client_id / secret 的 CLI 类型用户相反。

有人知道我是否可以在 Auth0 中创建这种用户吗?

标签: node.jsauthenticationoauth-2.0oauthauth0

解决方案


Auth0 向应用程序(在 API 中称为 /Clients)发出的 client_id 和 client_secret 用于与 Auth0 的机器对机器交互,而不是与您自己的服务。它们允许受信任的后端服务管理 Auth0 中的用户。或者,它们允许应用程序启动用户的 OAuth2 身份验证流程。

听起来您正在寻求避免 OAuth2 身份验证流程并提供静态 API 密钥,而不是为 Auth0,而是为您自己的服务。在这种情况下,Auth0 可能有点矫枉过正,但您可以使用 Auth0 或任何用户存储推出自己的解决方案。一个建议是为新的 Auth0 用户手动生成 API 令牌并将它们存储在用户的 app_metadata 中。当您的 CLI 为您的后端服务提供用户名和 API 密钥时,您受信任的后端服务可以使用其 Auth0 client_id 和 client_secret 在 Auth0 中查找用户并确认 app_metadata 中的 API 密钥匹配。

另请注意资源所有者密码流的存在。它将允许您的 CLI 代表您的 CLI 用户直接向 Auth0 提供用户名和密码。您生成的 API 令牌可以设置为用户的密码。


推荐阅读