该格子链接API文档指出,一个成功的格纹链接的结果是返回一个public_token具有以下属性:
一旦用户通过 Plaid Link 成功登录,该模块将提供一个 public_token。这与典型的 Plaid API 请求形成对比,后者返回一个 access_token。
在应用程序或浏览器中公开是安全的
不能用于直接检索帐户和路由号码(用于身份验证)或交易(用于连接)
可以通过 /exchange_token 端点交换 Plaid access_token。
据推测,这与 the 形成对比access_token,这意味着 theaccess_token是一个秘密。不过,据我所知,每一个格子终端,其采用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不应将其提供给最终用户。