2

我正在构建一个ASP.NET Web ApiwithOAuth2 authorization并正在开发一个应用程序,我们有:

  • 顾客
  • 组织
  • 用户

一个客户有一个或多个组织,一个用户可以代表一个或多个客户。

我想让这个逻辑成为范围和访问令牌的一部分。这样我可以限制访问,但我也可以使用我的 API 从应用程序中移除一些(复杂的)逻辑。(当他们选择了一个小范围时)

范围

  • 组织
  • 顾客
  • 全部

例如

当应用程序请求具有组织 范围的访问令牌时,用户应该在授权页面上看到两个下拉框。一个用于选择客户,另一个用于从该客户拥有的组织中选择一个。

这样,具有范围组织的访问令牌应仅限于来自该单个组织的数据。

使用 实现这一点的最佳方法是DotNetOpenAuth什么?

我应该将 organizationId 和 customerId 作为范围添加到 accesstoken 吗?如果我这样做,我将如何处理“客户”范围?我应该只添加没有组织 ID 的 CustomerId 吗?(客户最多可以拥有大约 150 个组织)

理想我想把它转换成声明,我可以很容易地使用它来授权用户的操作。

如果范围是解决此问题的正确方法,或者我可以更好地解决此问题的一些想法,我想要一些反馈,而无需重新发明轮子或破坏 DotNetOpenAuth 框架的开放。

PS 我同时构建了AuthorizationServerResourceServer.

4

1 回答 1

1

就我而言,您不应该添加组织 ID。您应该只将令牌视为用户能够访问组织的证明,而不是具体的组织。服务器可以使用存储在令牌中的用户名来仅显示允许用户查看的组织。换句话说,现在服务器需要做两项检查:

  1. 服务器检查提供的令牌是否被授权用于组织范围。
  2. 服务器检查用户(从令牌中检索)被授权的特定组织。

这样,您可以保持 OAuth 范围简单明了,但您仍然可以将访问权限限制为仅特定组织。

于 2013-03-28T11:13:44.570 回答