微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为 API 身份验证创建 client_id 和 client_secret?

如何解决如何为 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?