你如何将用户数据访问控制与 oauth2.0 API's 集成?
How do you Integrate user data access control with oauth2.0 API's?
我正在尝试弄清楚如何使用 OAuth2.0(或完全不同的东西)来处理调用后端 api 的用户只能检索与该用户相关的数据的情况.
例如:
假设我有一个银行应用程序,客户帐户信息位于“bank.com/account/{customerId}”。我如何限制对此的访问,以便其他客户无法看到 each-others 银行帐户信息?因为任何拥有访问令牌的人都可以获得任何人的帐户信息,而角色无法解决这个问题。
我想出了一个使用 Firebase JWT 来解决此问题的潜在解决方案,即访问传入请求的 header 并将令牌的 body 中的用户 ID 与其进行比较正在访问的数据。
我的直觉告诉我,我忽略了大局,因为这个问题一定是普遍现象,我在其他地方找不到答案。
我的环境是一个 Spring 引导后端,利用指向 firebase 项目的 Oauth2.0 资源服务器。后端连接到 Postgres 数据库。前端是一个 Angular 应用程序。
为确保用户只能访问自己的资源,您必须将其写入 Spring 启动应用程序。 OAuth2 只为您提供一个访问令牌,您可以使用它来找出谁在呼叫您以及他授予的范围。
但是安全逻辑由您来实现。如果 URL 中有 userId,则应检查它是否与访问令牌中的 userId 匹配。如果用户数据存储在数据库中,您可能需要向 SQL 查询添加条件,例如 WHERE user_id = :userId
.
您还可以使用访问令牌的范围来仅授予对用户资源的部分访问权限。如果另一个应用程序可以代表他访问用户的资源,这将很有用。例如在使用 Google/Facebook/Github.
登录某处时读取人名和电子邮件
我正在尝试弄清楚如何使用 OAuth2.0(或完全不同的东西)来处理调用后端 api 的用户只能检索与该用户相关的数据的情况.
例如: 假设我有一个银行应用程序,客户帐户信息位于“bank.com/account/{customerId}”。我如何限制对此的访问,以便其他客户无法看到 each-others 银行帐户信息?因为任何拥有访问令牌的人都可以获得任何人的帐户信息,而角色无法解决这个问题。
我想出了一个使用 Firebase JWT 来解决此问题的潜在解决方案,即访问传入请求的 header 并将令牌的 body 中的用户 ID 与其进行比较正在访问的数据。
我的直觉告诉我,我忽略了大局,因为这个问题一定是普遍现象,我在其他地方找不到答案。
我的环境是一个 Spring 引导后端,利用指向 firebase 项目的 Oauth2.0 资源服务器。后端连接到 Postgres 数据库。前端是一个 Angular 应用程序。
为确保用户只能访问自己的资源,您必须将其写入 Spring 启动应用程序。 OAuth2 只为您提供一个访问令牌,您可以使用它来找出谁在呼叫您以及他授予的范围。
但是安全逻辑由您来实现。如果 URL 中有 userId,则应检查它是否与访问令牌中的 userId 匹配。如果用户数据存储在数据库中,您可能需要向 SQL 查询添加条件,例如 WHERE user_id = :userId
.
您还可以使用访问令牌的范围来仅授予对用户资源的部分访问权限。如果另一个应用程序可以代表他访问用户的资源,这将很有用。例如在使用 Google/Facebook/Github.
登录某处时读取人名和电子邮件