所以我正在尝试尽可能地实现我正在构建的这个API的OAuth 2。我处于需要生成access_token的位置,但我正在试图找出这样做的最佳方法。我读过一个人们正在加密revenant信息和access_token(如过期日期,客户端ID等)的地方,以防止在每个API调用中查找数据库。使用什么来生成OAuth 2访问令牌
我想到了这一点,并认为,如何生成access_token句柄撤销访问?我的意思是使用OAuth的好处之一是能够撤销应用程序对数据的访问权限,如果我只是在没有在数据库中查找的情况下使用加密数据,如果我撤消应用程序,它仍然有权访问到我的数据,直到至少access_token过期。
我认为更好的方式来防止在关系数据库中查找也会将access_token存储在键/值数据库(如redis)中,因为这样会更快一些。这样,如果有人撤销对应用程序的访问,它可以删除关系数据库中的记录以及键/值数据中的记录。
我思念的东西,有没有使用加密数据到的access_token,防止数据库查找每个API调用,并因为能够随时撤销访问的方法吗?
有趣。我想我仍然需要在数据库中保留所有的令牌(仍然需要保留数据库中的所有有效令牌,以便能够撤销它们),但将它们放在单独的表中以加快查找速度会很好。 – ryanzec 2013-03-04 15:59:24
由于授权代码和访问令牌过期非常快(即几分钟内),因此您可能不需要撤销它们。因此,您也可以选择仅保留数据库中的有效刷新标记列表,并在撤消时从列表中删除。您仍然可以使用独立代码和不需要列出的访问令牌节省大量数据库空间和搜索成本。 – 2013-03-04 16:20:37