如何为Prime Trust的API创建JWT令牌?

时间:2019-10-08 15:05:05

标签: rest jwt

我正在与Prime Trust's API合作,但无法创建JWT令牌。我遵循documentation,其中指出:

  

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

     

您需要采取当前步骤才能通过API入门

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

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

JSON Web令牌(JWT)

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

  

创建一个新的JWT

     

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

     

POST / 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主体包含在内。我尝试了以下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

1 个答案:

答案 0 :(得分:0)

根据文档:

  

创建新的JWT

     

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

因此,基本上您所需要做的就是使用您的凭据创建一个设置为“基本身份验证”的 Authorization 标头:

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'