如何解决如何为 API 身份验证创建 client_id 和 client_secret?
我想实现机器到机器的身份验证。我正在考虑为 API 用户分配 client_secret 和 client_id,API 1 将使用它们来换取 JWT 访问令牌。
我能否只为机密和 ID 创建 2 个唯一字符串并将它们存储在数据库中针对用户?
大致如下:
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?
解决方法
更标准的选项可能是将用户令牌从一台机器转发到另一台机器,如这篇 IAM Primer 文章中所述。
您正在做的一个可能的问题是您正在为用户存储一个长期存在的凭据,该凭据可用于在未经用户同意的情况下访问资源。
根据具体情况,从安全角度来看,这可能很糟糕,因为如果恶意方掌握了用户的客户端 ID 和机密,他们可以作为用户进行操作,而下游 API 无法知道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。