如何从 auth0 客户端的 api 获取有效令牌?

How to get valid token from api from auth0 client?

我正在使用带有 auth0 的 emberjs 登录。 通常我输入用户名和密码,我得到一个有效的令牌,我发送到 api 等

现在,我想在 api 上编写一些测试,我总是需要一个有效的令牌。我的令牌将在一天后过期。因此,对于 运行 测试,我总是必须手动更改令牌样本。

所以我想以某种方式从 api 获得令牌?有可能吗?

很好的问题。为测试执行此操作的一种简单方法是使用 Client Credentials Grant Flow。由于您需要测试中的访问令牌,因此您可以将其视为机器到机器的流程。

这是我在测试中执行此操作的示例 to receive an Auth0 Management API v2 access token. And the corresponding test too. And here is where I use that access token lookup as part of a separate test。但是,无论是 Auth0 特定管理 API 还是您在 Auth0 仪表板(在 APIs 下)使用非交互式客户端和您自己定义的 API,都适用相同的原则观众。

调用的"shape"大致如下:

{ 
  method: 'POST',
  url: 'https://{TENANT}.auth0.com/oauth/token',
  headers: { 'content-type': 'application/json' },
  body: '{
         "client_id":"{CLIENT ID}",
         "client_secret":"{CLIENT SECRET}, 
         "audience":"https://{tenant}.auth0.com/api/v2/",
         "grant_type":"client_credentials"
  }' 
};

您调用 oauth/token 端点,并传递 clientId、clientSecret、受众(针对 api)和授权类型 (client_credentials)。如果使用 emberjs / php 执行此操作 - 它非常相似 - 如果您在 Auth0 仪表板中创建一个新客户端并选择 Non Interactive 客户端类型,然后点击 Quick Start - 它会指导您完成设置(如果需要的话)。请看下面的截图,如果您有任何问题,请随时发表评论。