ReST API:我应该将访问令牌与数据库中的用户相关联吗
ReST API: Should I associate the access token with a user in my database
我正在 nodeJS 服务器上构建安全的 ReST API,以便我的 Android 应用程序可以访问我网站上的数据。基于阅读其他一些帖子,我开始明白我应该使用访问令牌。所以我的想法是执行以下操作:
1) 当用户登录 Android 应用程序时,该应用程序向我网站上的 /api/login
发送请求,提供用户名和密码(这当然需要通过 SSL以防止窃听)。
2) 我的服务器验证用户名 + 密码是否匹配,如果匹配,则使用访问令牌进行响应。
3) 应用程序使用此访问令牌向我的 API.
发出所有后续请求
我的问题是我应该将访问令牌存储在我服务器上的数据库中吗?具体来说,我应该存储访问令牌与该特定用户关联的事实吗?我看过的大多数教程都没有这样做,但如果我不这样做,那么如何阻止具有此访问令牌的用户修改或查看另一个用户的数据?我不需要将访问令牌与数据库中的用户配对吗?
如果您需要构建一个安全的 API,事情会稍微复杂一些。您需要使用私有密钥库签署访问令牌。
是否可以选择使用像 Auth0 这样的身份验证服务?他们正在为您生成 JWT 令牌,您只需要验证此令牌。 API 是完全无状态的。您可以在他们的网站上找到几乎所有编程语言的库。
您要做的正是 HTTP 会话所做的。
所以,我认为你可以只使用 HTTP Session 功能它已经在 Django,Spring 等 WAS 框架中实现。如果 NodeJS 提供会话功能,只需在框架中使用会话功能。如果没有,请查找 HTTP Session 库。也许您可以找到许多处理会话实现的库。
尝试使用这个库,我做了相同类型的项目,这个 life saver 是我的解决方案。
我正在 nodeJS 服务器上构建安全的 ReST API,以便我的 Android 应用程序可以访问我网站上的数据。基于阅读其他一些帖子,我开始明白我应该使用访问令牌。所以我的想法是执行以下操作:
1) 当用户登录 Android 应用程序时,该应用程序向我网站上的 /api/login
发送请求,提供用户名和密码(这当然需要通过 SSL以防止窃听)。
2) 我的服务器验证用户名 + 密码是否匹配,如果匹配,则使用访问令牌进行响应。
3) 应用程序使用此访问令牌向我的 API.
发出所有后续请求我的问题是我应该将访问令牌存储在我服务器上的数据库中吗?具体来说,我应该存储访问令牌与该特定用户关联的事实吗?我看过的大多数教程都没有这样做,但如果我不这样做,那么如何阻止具有此访问令牌的用户修改或查看另一个用户的数据?我不需要将访问令牌与数据库中的用户配对吗?
如果您需要构建一个安全的 API,事情会稍微复杂一些。您需要使用私有密钥库签署访问令牌。
是否可以选择使用像 Auth0 这样的身份验证服务?他们正在为您生成 JWT 令牌,您只需要验证此令牌。 API 是完全无状态的。您可以在他们的网站上找到几乎所有编程语言的库。
您要做的正是 HTTP 会话所做的。
所以,我认为你可以只使用 HTTP Session 功能它已经在 Django,Spring 等 WAS 框架中实现。如果 NodeJS 提供会话功能,只需在框架中使用会话功能。如果没有,请查找 HTTP Session 库。也许您可以找到许多处理会话实现的库。
尝试使用这个库,我做了相同类型的项目,这个 life saver 是我的解决方案。