格纹访问令牌是秘密吗?
的Plaid Link API documentation指出,一个成功的格纹链接的结果返回具有以下属性的public_token
:格纹访问令牌是秘密吗?
一旦用户通过格子链接成功onboarded,该模块将 提供public_token。这与典型的格式API 请求不同,后者返回access_token。
是安全的应用程序或浏览器暴露
不能用于检索帐户和路由的数字(AUTH)或事务(连接)直接
可用于通过ACCESS_TOKEN格子交换 /exchange_token端点。
推测,这与access_token
相反,这意味着access_token
是一个秘密。但是,据我所知,every Plaid endpoint需要access_token
还需要客户端ID和secret
值。
假设secret
实际上是保密的,揭露访问令牌在理论上是安全的吗?如果不是,我错过了什么?如果是这样,公众令牌有什么意义?
你的假设是正确的,access_token
应该保密。
公开access_token
的唯一原因是向用户显示该信息(没有理由这样做),或者为客户端提供信息以便稍后将其发回(例如使用OAuth令牌认证)。
但是,如果您公开access_token
,这意味着您的API期望用户在请求信息时发送自己的访问令牌。您的API信任该用户输入。如果用户访问另一个用户的access_token
,他们可以将其发送到您的API,并访问另一个用户的帐户。
要防范这种未经授权的访问,您需要跟踪哪个用户有权访问哪些令牌,并且您必须验证该请求以确保没有未经授权的访问。
而在这一点上,你需要问自己,为什么首先暴露access_token
?客户ID是公开信息,所以你依靠的事实是你的secret
将不会公开。如果您的秘密曾暴露过和您的access_tokens
已被视为公开,那么所有用户的所有银行信息都将被公开。
为确保您的用户数据保持尽可能安全,绝不应将access_token
交给最终用户。
我不再在Square工作了,所以我不能访问我关于这个主题的电子邮件,但我记得得到格子工程师的完全相反的回答,所以我很想知道混淆的地方在哪里。我认为我们都是在假设访问令牌与特定客户(并因此是秘密)相关的情况下运营的。您的评论表明情况并非如此。这是否意味着我可以使用由我的客户创建的访问令牌与其他人的客户机密? – Troy