【发布时间】:2018-03-05 15:38:11
【问题描述】:
我正在使用带有 auth0 的 emberjs 登录。 通常我输入用户名和密码,我会得到一个有效的令牌,我会发送给 api 等。
现在,我想写一些关于 api 的测试,我总是需要一个有效的令牌。我的令牌在一天后到期。因此,要运行测试,我总是必须手动更改令牌样本。
所以我想以某种方式从 api 获取令牌?是可能的,如何?
【问题讨论】:
我正在使用带有 auth0 的 emberjs 登录。 通常我输入用户名和密码,我会得到一个有效的令牌,我会发送给 api 等。
现在,我想写一些关于 api 的测试,我总是需要一个有效的令牌。我的令牌在一天后到期。因此,要运行测试,我总是必须手动更改令牌样本。
所以我想以某种方式从 api 获取令牌?是可能的,如何?
【问题讨论】:
非常好的问题。为测试执行此操作的一种简单方法是使用Client Credentials Grant Flow。由于您需要测试中的访问令牌,因此您可以将其视为机器到机器流。
这是我在测试to receive an Auth0 Management API v2 access token 中执行此操作的示例。还有corresponding test too。这里是我使用访问令牌查找as part of a separate test 的地方。但是,无论是 Auth0 特定的管理 API 还是您使用非交互式客户端和您自己的受众在 Auth0 仪表板(在 API 下)中定义的 API,相同的原则都适用。
调用的“形状”大致如下:
{
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 - 它会引导您完成设置(如果需要)。请看下面的截图,如果您有任何问题,请随时离开 cmets。
【讨论】: