我正在使用带有auth0的emberjs登录。 通常我输入用户名和密码,我得到一个有效的令牌,我发送给api等。
现在,我想在api上编写一些测试,但我总是需要一个有效的令牌。我的令牌在一天到期。因此,为了运行测试,我总是需要手动更改令牌样本。
所以我想从api以某种方式获得一个令牌?有可能,怎么样?
答案 0 :(得分:2)
非常好的问题。为测试执行此操作的简单方法是使用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)和grant-type(client_credentials
)。如果使用emberjs / php执行此操作 - 它非常相似 - 如果您在Auth0仪表板中创建新客户端并选择Non Interactive
客户端类型,然后点击Quick Start
- 它将指导您完成设置(如果需要) 。请参阅下面的屏幕截图,如果您有任何问题,请随时发表评论。