Rest 我应该在数据库中以纯文本形式存储Yodlee用户密码吗?

Rest 我应该在数据库中以纯文本形式存储Yodlee用户密码吗?,rest,yodlee,Rest,Yodlee,我正在考虑使用Yodlee FinApp API开发一个应用程序 他们的REST协议要求您将用户登录到他们的系统以检索数据。为此,您需要发送登录名和密码。成功的请求将返回一个有效期为30分钟的令牌。在30分钟过去之前,您必须再次登录用户才能检索新令牌。在我看来,问题就在这里 我可以设置这样的功能,每次用户登录到我的应用程序时,我都会立即将他们的登录信息和密码发送到Yodlee,并将他们也登录到那里。然后,我就不需要将他们的密码以明文形式存储在我的数据库中。但30分钟过去后会发生什么?我实际上并不

我正在考虑使用Yodlee FinApp API开发一个应用程序

他们的REST协议要求您将用户登录到他们的系统以检索数据。为此,您需要发送登录名和密码。成功的请求将返回一个有效期为30分钟的令牌。在30分钟过去之前,您必须再次登录用户才能检索新令牌。在我看来,问题就在这里

我可以设置这样的功能,每次用户登录到我的应用程序时,我都会立即将他们的登录信息和密码发送到Yodlee,并将他们也登录到那里。然后,我就不需要将他们的密码以明文形式存储在我的数据库中。但30分钟过去后会发生什么?我实际上并不“知道”他们的密码,所以我无法给他们一个新的令牌,需要他们再次登录。让用户每30分钟就必须重新登录一次,这将是一个真正的痛苦

或者,我可以在他们注册我的应用程序时为他们生成我自己的密码,并将其用于我的应用程序与Yodlee的交互。但我把他们的Yodlee密码以明文形式存储在我的数据库中。假设有人能够访问我的服务器,他们将拥有我的应用程序凭据和所有用户凭据,因此他们能够模拟我的应用程序的登录过程并获得对用户事务的访问。这似乎是个坏主意


正确的方法是什么?我正在调查的两种途径似乎都有严重的缺点,但也许我错过了另一种选择?

@aardvarkk-您计划如何在应用程序上验证用户身份

如果我理解正确,那么您应该在应用程序中存储用户凭据,以验证用户,并检查他/她是否是新用户

当您拥有这些数据时,您可以在30分钟前代表用户再次登录&仅当用户仍在会话中时,而不是每30分钟登录一次

我们建议您不要以纯文本形式存储任何用户凭据。您可以在存储之前对其进行加密,在将其发送给Yodlee之前对其进行解密

此外,对Yodlee生产环境的应用程序凭据的访问受到IP限制,因此只有来自静态IP的请求才能成功连接到Yodlee

[更新] 在这种情况下: 您可以调用
touchConversationCredentials
API来扩展会话凭据(即UserSessionToken)的相对(或非活动)超时有效性。您需要在此过程中传递userSessionToken。您可以在用户会话的第29分钟之前调用此命令,将其会话再延长30分钟。但绝对超时时间为120分钟,因此在初始会话创建120分钟后,它将过期

首先,确实要避免将用户密码存储在纯文本中。这只不过是要求一个痛苦的世界,如果任何事情出了问题(例如,如果你被黑客),并可以打开你的各种法律麻烦。真的,不要那样做。 事实上,如果你根本不了解他们的Yodlee证书,情况会更好;你不想成为他们,你只想代表他们与系统互动


REST并没有说太多关于系统如何相互认证的内容;通常有许多可能性。您所能做的就是尝试使用您拥有的任何凭据进行连接,如果连接失败,请求助于用户(好的,求助于客户端代码),以便他们可以给您另一个令牌。REST确实清楚地说明了身份验证失败应该如何传达,a,但实际上仅此而已。

问题不在于初始登录。我确实有用户的凭据——他们的密码的MD5散列,将与他们发送的密码进行比较。他们第一次寄就可以了。但我不会将他们的密码存储在纯文本中。30分钟过去了,我该怎么办?我没有他们的明文密码,这正是Yodlee所需要的。我只有一份杂烩。因此,我将被迫要求用户再次输入他们的凭据。使用这种方法,任何用户都不能使用该网站超过30分钟,对吗?@aardvarkk-我知道您将如何进行初始登录,但如果同一用户在两天后再次登录,情况会如何。如何验证他/她是否是您应用程序的已注册用户?我会将他们的密码的哈希版本与数据库中的密码进行比较。不过,我无法检索他们密码的纯文本版本。在他们首次登录我的网站时,我可以将这些信息传递给Yodlee。但在那之后,我无法知道他们的明文密码,因此在30分钟后我无法在Yodlee上再次调用
login()
。@aardvarkk-我已经更新了最初的答案。并提供了API(在登录界面下提供),该API应满足您的要求。希望这有帮助。这可能就是我想要的,谢谢。我将用它做实验。正确。然而,似乎你只能代表他们互动30分钟(最多120分钟)。因此,在没有用户干预或存储yodlee用户密码的情况下,无法定期(如每天一次)执行此操作。因此,api似乎迫使我们使用不安全的做法。我相信,如果要实现OAuth刷新令牌,它们可能会避免这个问题。