首页 > 解决方案 > 如何为 Prime Trust 的 API 创建 JWT 令牌?

问题描述

我正在使用Prime Trust 的 API,但无法创建 JWT 令牌。我正在关注说明以下内容的文档

托管 API 入门 -(特定于沙盒)

您需要按照当前步骤通过 API 开始使用

  1. 创建新用户
  2. 通过获取 JWT 使用 API 进行身份验证。
  3. 创建一个帐户。
  4. 测试模式 API - 批准 CIP 和 AML 帐户的所有者。
  5. 测试模式 API - 开立资金账户

我能够按照文档创建用户,但我坚持创建 JWT 令牌。根据文档,我应该使用以下内容创建令牌:

JSON Web 令牌 (JWT)

除了实际生成 JWT 之外,JSON Web 令牌或 JWT 是所有请求的首选身份验证方法。由于 JWT 不是持久的服务器资源,因此它们不是使用 JSONAPI 样式的请求或响应创建的。

创建一个新的 JWT

可以通过使用 HTTP 基本授权将用户的凭据传递到以下端点来创建新的 JWT。JWT 上的任何特殊设置,例如 IP 白名单、过期时间或 TOTP MFA,都必须在创建期间作为表单值传入。

发布 /auth/jwts

这是他们给出的示例调用:

curl --location --request POST "https://sandbox.primetrust.com/auth/jwts" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --form "expires_at=2019-06-06T07:30:40Z" \
  --form "otp=382948" \
  --form "cidr[]=192.168.1.213/32" \
  --form "cidr[]=127.0.0.1/32"

我已经尝试将不同的调用与下面概述的详细信息相结合,但在我的所有尝试中都出现以下错误:

401 Unauthorized
{
    "errors": [
        {
            "status": 401,
            "title": "Not authenticated."
        }
    ]
}

身体

POST https://sandbox.primetrust.com/auth/jwts     

POST https://sandbox.primetrust.com/auth/jwts     
{
    "email": "email@email.com",
    "password": "123abc"
}

POST https://sandbox.primetrust.com/auth/jwts     
{
    "data": {
        "email": "email@email.com",
        "password": "123abc"
    }
}

POST https://sandbox.primetrust.com/auth/jwts     
{
    "name": "name",
    "email": "email@email.com",
    "password": "123abc"
}

POST https://sandbox.primetrust.com/auth/jwts     
{
    "id": {guid},
    "name": "name",
    "email": "email@email.com",
    "password": "123abc"
}

POST https://sandbox.primetrust.com/auth/jwts     
{
    "id": {guid},
    "password": "123abc"
}

标题

Content-Type: application/json
expires_at: 2019-12-31T11:59:59Z
alg: HS256
typ: JWT

我认识到我的调用与示例调用不完全一致,但我从文档中的理解是,所需要的只是生成 JWT 令牌的名称和密码。我错过了什么?


更新 1

基于联系 Prime Trust 支持,用户名/电子邮件需要作为参数包含在内,而不是在 url 的正文中。我尝试了以下网址但没有成功

https://sandbox.primetrust.com/auth/jwts?email=email@email.com&password=123abc&id={guid}
https://sandbox.primetrust.com/auth/jwts?email=email@email.com&password=123abc
https://sandbox.primetrust.com/auth/jwts?password=123abc&id={guid}
https://sandbox.primetrust.com/auth/jwts?name=name&password=123abc

标签: restjwt

解决方案


According to docs:

Creating a new JWT

A new JWT can be created by passing a user's credentials using HTTP Basic Authorization to the following endpoint. Any special settings on the JWT such as IP whitelisting, expiration time or TOTP MFA must be passed in as form values during creation.

So basically all you need is create an Authorization header set to Basic Auth with your credentials:

curl -X POST \
  https://sandbox.primetrust.com/auth/jwts \
  -H 'Authorization: Basic YOUR_BASE64_ENCODED_EMAIL_AND_PASSWORD' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'cache-control: no-cache'

推荐阅读