rest - 如何为 Prime Trust 的 API 创建 JWT 令牌?
问题描述
我正在使用Prime Trust 的 API,但无法创建 JWT 令牌。我正在关注说明以下内容的文档:
托管 API 入门 -(特定于沙盒)
您需要按照当前步骤通过 API 开始使用
- 创建新用户
- 通过获取 JWT 使用 API 进行身份验证。
- 创建一个帐户。
- 测试模式 API - 批准 CIP 和 AML 帐户的所有者。
- 测试模式 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
解决方案
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'
推荐阅读
- java - 如何查询 Postgres 以将 JSON 返回到 Java?
- javascript - 为什么预览时图像显示模糊?
- plugins - 如何在 OSGI Enroute 中添加现有捆绑包作为声明性服务
- php - 如何使 php 页脚不出现在我网站的某个特定页面上?
- java - 为什么 Java 声称 1.5 版本需要向后兼容?
- python - 居中和顶部对齐 QVBoxLayout
- python - 熊猫:`a < b` 的行为与 `a.lt(b)` 不同
- z3 - Z3/Z3py 中的传递闭包
- matlab - Matlab:如何为 AR 模型计算调整后的 R 平方
- python - 如何将列表列与熊猫中另一个数据框中的列匹配?