将凭据发送到 Rest API 以接收 JWT 令牌的安全方法是什么?
What is a secure approach for sending credentials to a Rest API to receive a JWT Token?
我在 .Net 核心中设计了一个 RestFul API,有两个端点。两者都是 Http POST 方法,它们在 IIS 中部署时使用 Https。
- 接收令牌
- 发送数据
所以我的方法是,客户端将像这样通过 JSON 有效负载将用户 ID 和密码传递到 ReceiveToken
端点。
{
"vendorUserID": "user123",
"vendorPassword": "passwd1234"
}
我的服务器端有一个数据库,其中存储了每个用户的凭据 - role
。我正在验证用户 ID 和密码,如果它们是正确的,那么我将颁发一个 JWT 令牌 - 包含两个声明 VendorUserID
和 role
.
此 JWT 令牌已发送给用户。
现在,在我的第二个端点中,用户可以传递业务数据(有效负载)以及 JWT Bearer 令牌(在 header 中)。我在我的 Action 方法中设置了 [Authorize(Roles = "contributer, admin")]
属性,其中包含允许的角色名称,这样只有有效用户才能 post 业务数据。
到目前为止 API 工作正常。
但我对通过我的第一个端点发送 userid
和 password
有疑问。这是一个好方法吗?任何人都可以看到密码,因为这是以纯文本形式发送的吗?有哪些更强大的方法来确保这一点?
建立正确的 HTTPS 连接后,只有发送方和接收方可以看到 POST 负载。因此,您可以将其作为常规 JSON 文本发送。
我相信所有 OAuth 提供者,如 Google、Facebook 等,都遵循相同的规则,并在 HTTPS 连接内以纯文本形式发送凭据。
您可能需要使用您的服务器配置在 Rest API end-point 上强制使用 HTTPS - 以确保您的某些客户端不会在没有意识到的情况下通过 HTTP 发送 plain-text 凭据。
并且,还要确保您使用由可信机构签署的证书。这可确保客户端不会与冒充您的服务器的虚假服务器建立 HTTPS 连接。
我在 .Net 核心中设计了一个 RestFul API,有两个端点。两者都是 Http POST 方法,它们在 IIS 中部署时使用 Https。
- 接收令牌
- 发送数据
所以我的方法是,客户端将像这样通过 JSON 有效负载将用户 ID 和密码传递到 ReceiveToken
端点。
{
"vendorUserID": "user123",
"vendorPassword": "passwd1234"
}
我的服务器端有一个数据库,其中存储了每个用户的凭据 - role
。我正在验证用户 ID 和密码,如果它们是正确的,那么我将颁发一个 JWT 令牌 - 包含两个声明 VendorUserID
和 role
.
此 JWT 令牌已发送给用户。
现在,在我的第二个端点中,用户可以传递业务数据(有效负载)以及 JWT Bearer 令牌(在 header 中)。我在我的 Action 方法中设置了 [Authorize(Roles = "contributer, admin")]
属性,其中包含允许的角色名称,这样只有有效用户才能 post 业务数据。
到目前为止 API 工作正常。
但我对通过我的第一个端点发送 userid
和 password
有疑问。这是一个好方法吗?任何人都可以看到密码,因为这是以纯文本形式发送的吗?有哪些更强大的方法来确保这一点?
建立正确的 HTTPS 连接后,只有发送方和接收方可以看到 POST 负载。因此,您可以将其作为常规 JSON 文本发送。
我相信所有 OAuth 提供者,如 Google、Facebook 等,都遵循相同的规则,并在 HTTPS 连接内以纯文本形式发送凭据。
您可能需要使用您的服务器配置在 Rest API end-point 上强制使用 HTTPS - 以确保您的某些客户端不会在没有意识到的情况下通过 HTTP 发送 plain-text 凭据。
并且,还要确保您使用由可信机构签署的证书。这可确保客户端不会与冒充您的服务器的虚假服务器建立 HTTPS 连接。