You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Auth0中动态注册Machine-to-Machine类型客户端?

动态创建Machine-to-Machine类型客户端的方法

我最初在Auth0社区提出了这个问题,现在重复提问以覆盖更广泛受众

我想了解,如何在创建时将动态生成的客户端指定为Machine-to-Machine(M2M)类型,用于API调用?我的核心目标是允许开发者自行创建应用,然后按照OIDC规范,使用Client Credentials Flow访问资源服务器的信息。

目前我尝试的方法只能创建默认类型为“通用”的动态应用,比如通过以下请求:

curl --request POST \
  --url 'https://<tenant>.us.auth0.com/oidc/register' \
  --header 'content-type: application/json' \
  --data '{"client_name":"My Dynamic Application","redirect_uris": ["https://application.example.com/callback", "https://application.example.com/callback2"] }'

但这样创建的应用默认是“Generic”类型,我希望能在创建时指定类似{ "app_type": "m2m" }的参数,直接创建M2M类型的应用,而不是手动修改已有应用。


解决方案:使用Auth0 Management API创建M2M客户端

OIDC的动态注册端点(oidc/register)并不支持直接创建M2M类型的应用,若要动态生成M2M客户端,需要使用Auth0 Management API的创建客户端端点,并指定应用类型为non_interactive(Auth0中M2M应用的标识类型)。

1. 获取Management API的访问令牌

首先需要获取具有create:clients权限的访问令牌,可通过Client Credentials Flow向Auth0的令牌端点请求:

curl --request POST \
  --url 'https://<tenant>.us.auth0.com/oauth/token' \
  --header 'content-type: application/json' \
  --data '{
    "client_id": "<你的Management API客户端ID>",
    "client_secret": "<你的Management API客户端密钥>",
    "audience": "https://<tenant>.us.auth0.com/api/v2/",
    "grant_type": "client_credentials"
  }'

2. 创建M2M类型客户端

使用获取到的访问令牌,调用Management API的创建客户端端点,指定app_type为non_interactive:

curl --request POST \
  --url 'https://<tenant>.us.auth0.com/api/v2/clients' \
  --header 'authorization: Bearer <你的Management API访问令牌>' \
  --header 'content-type: application/json' \
  --data '{
    "name": "My Dynamic M2M Application",
    "app_type": "non_interactive",
    "grant_types": ["client_credentials"],
    "token_endpoint_auth_method": "client_secret_post"
  }'

3. 关联目标API(可选)

如果需要让该M2M客户端访问特定的API,还需要调用Management API的创建客户端授权端点,为客户端分配API权限:

curl --request POST \
  --url 'https://<tenant>.us.auth0.com/api/v2/clients/<客户端ID>/grants' \
  --header 'authorization: Bearer <你的Management API访问令牌>' \
  --header 'content-type: application/json' \
  --data '{
    "client_id": "<客户端ID>",
    "audience": "<目标API的标识符>",
    "scope": ["read:resource", "write:resource"]
  }'

内容的提问来源于stack exchange,提问作者9301293

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:15:11