Security 格子图案的访问令牌是秘密吗?

Security 格子图案的访问令牌是秘密吗?,security,plaid,Security,Plaid,表示成功的格子链接的结果返回具有以下属性的public\u令牌: 一旦用户通过Plaid Link成功登船,模块将 提供一个公共令牌。这与典型的格纹API形成对比 返回访问令牌的请求 在应用程序或浏览器中公开是安全的 无法用于直接检索帐户和路由号码(用于身份验证)或事务(用于连接) 可以通过交换一个格子访问令牌 /交换令牌终结点 这可能与访问令牌形成对比,这意味着访问令牌是一个秘密。但是,据我所知,这需要access\u令牌还需要客户端ID和secret值 假设秘密实际上是保密的,那么公开访问令

表示成功的格子链接的结果返回具有以下属性的
public\u令牌

一旦用户通过Plaid Link成功登船,模块将 提供一个公共令牌。这与典型的格纹API形成对比 返回访问令牌的请求

在应用程序或浏览器中公开是安全的

无法用于直接检索帐户和路由号码(用于身份验证)或事务(用于连接)

可以通过交换一个格子访问令牌 /交换令牌终结点

这可能与
访问令牌
形成对比,这意味着
访问令牌
是一个秘密。但是,据我所知,这需要
access\u令牌
还需要客户端ID和
secret


假设
秘密
实际上是保密的,那么公开访问令牌在理论上安全吗?如果没有,我错过了什么?如果是这样的话,公共令牌有什么意义?

您的假设是正确的,访问令牌应该保密

公开
access\u令牌
的唯一原因是向用户显示该信息(没有理由这样做),或者向客户机提供信息,以便它可以稍后将其发送回来(例如使用OAuth令牌进行身份验证)

但是,如果您公开了
access\u令牌
,这意味着您的API希望用户在请求信息时发送自己的访问令牌。您的API信任该用户输入。如果用户获得了对另一个用户的
访问\u令牌的访问权,他们可以将该令牌发送到您的API,并获得对其他用户帐户的访问权

为了防止这种未经授权的访问,您需要跟踪哪个用户有权访问哪些令牌,并且您必须在任何请求下验证,以确保没有未经授权的访问

在这一点上,您需要问自己,为什么首先公开
access\u令牌
?客户端ID是公共信息,因此您依赖的是您的
机密不会被公开。如果你的秘密曾经被公开,并且你的
access\u代币
已经被视为公共代币,那么所有用户的所有银行信息都将被公开


为确保您的用户数据尽可能安全,不应将
访问令牌
提供给最终用户。

您的假设是正确的,
访问令牌
应保密

公开
access\u令牌
的唯一原因是向用户显示该信息(没有理由这样做),或者向客户机提供信息,以便它可以稍后将其发送回来(例如使用OAuth令牌进行身份验证)

但是,如果您公开了
access\u令牌
,这意味着您的API希望用户在请求信息时发送自己的访问令牌。您的API信任该用户输入。如果用户获得了对另一个用户的
访问\u令牌的访问权,他们可以将该令牌发送到您的API,并获得对其他用户帐户的访问权

为了防止这种未经授权的访问,您需要跟踪哪个用户有权访问哪些令牌,并且您必须在任何请求下验证,以确保没有未经授权的访问

在这一点上,您需要问自己,为什么首先公开
access\u令牌
?客户端ID是公共信息,因此您依赖的是您的
机密不会被公开。如果你的秘密曾经被公开,并且你的
access\u代币
已经被视为公共代币,那么所有用户的所有银行信息都将被公开


为了确保您的用户数据尽可能安全,不应将
access\u token
提供给最终用户。

我不再在Square工作,因此无法访问有关此主题的电子邮件,但我记得从Plaid工程师那里得到了完全相反的响应,因此我很想知道混淆的地方。我认为我们都是在假设访问令牌绑定到特定客户机(因此是秘密的)的情况下操作的。你的评论表明情况并非如此。这是否意味着我可以将我的客户创建的访问令牌与其他人的客户机密一起使用?我不再在Square工作,因此我无法访问我关于这个主题的电子邮件,但我记得从一位Plaid工程师那里得到了完全相反的响应,因此我很好奇,想知道困惑在哪里。我认为我们都是在假设访问令牌绑定到特定客户机(因此是秘密的)的情况下操作的。你的评论表明情况并非如此。这是否意味着我可以将我的客户创建的访问令牌与其他人的客户机密一起使用?