我想实现机器到机器的身份验证。我正在考虑为API用户分配一个client_secret和client_id,API1将使用它们来换取JWT访问令牌。
我是否可以只为密钥和ID创建两个唯一的字符串,并将它们针对用户存储在数据库中?
大致是这样的:
import { randomUUID } from "crypto";
const bcrypt = require('bcrypt');
const saltRounds = 10;
const client_id = randomUUID();
const client_secret = randomUUID();
const salt = bcrypt.genSaltSync(saltRounds);
const hash = bcrypt.hashSync(client_secret, salt);
// store hash in database
// have API store client_secret and client_id as environment variables然后,客户端密码/ id可用于在收到请求时验证API?
发布于 2021-07-15 02:34:47
更标准的选择可能是将用户令牌从一台机器转发到另一台机器,如这篇IAM Primer文章中所述。
您正在做的一个可能的问题是,您正在为用户存储一个长期存在的凭据,该凭据可用于在未经用户同意的情况下访问资源。
根据场景的不同,从安全的角度来看,这可能是不好的,因为如果恶意方获得了用户的客户端ID和秘密,他们可以作为用户操作,而下游API无法知道。
https://stackoverflow.com/questions/68382137
复制相似问题