Asp.net web api DotnetOpenAuth作用域和声明

Asp.net web api DotnetOpenAuth作用域和声明,asp.net-web-api,oauth-2.0,dotnetopenauth,Asp.net Web Api,Oauth 2.0,Dotnetopenauth,我正在使用OAuth2授权构建一个ASP.NET Web Api,并且正在开发一个应用程序,其中我们有: 顾客 组织机构 使用者 客户有一个或多个组织,用户可以代表一个或多个客户行事 我想让这个逻辑成为作用域和AccessToken的一部分。通过这种方式,我可以限制访问,但也可以使用我的API从应用程序中去掉一些(复杂的)逻辑。(当他们选择小范围时) 范围 组织机构 顾客 全部 例如 当应用程序向组织请求accesstoken时 范围用户应在授权页面上看到两个下拉框。一对一 选择一个客户

我正在使用
OAuth2授权构建一个
ASP.NET Web Api
,并且正在开发一个应用程序,其中我们有:

  • 顾客
  • 组织机构
  • 使用者
客户有一个或多个组织,用户可以代表一个或多个客户行事

我想让这个逻辑成为作用域和AccessToken的一部分。通过这种方式,我可以限制访问,但也可以使用我的API从应用程序中去掉一些(复杂的)逻辑。(当他们选择小范围时)

范围

  • 组织机构
  • 顾客
  • 全部
例如

当应用程序向组织请求accesstoken时 范围用户应在授权页面上看到两个下拉框。一对一 选择一个客户和第二个客户,从组织中选择一个 这个客户有

这样,范围组织的accesstoken应仅限于此单一组织的数据

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

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

理想情况下,我想将其转换为声明,我可以方便地使用它来授权用户的操作

我想要一些反馈,如果作用域是解决这个问题的正确方法,或者我想知道如何更好地解决这个问题,而不必重新发明轮子或破坏DotNetOpenAuth框架

PS
我构建了
授权服务器
资源服务器

,就我而言,您不应该添加组织ID。你应该考虑令牌作为用户能够访问组织的证据,而不是特定的组织。服务器可以使用令牌中存储的用户名仅显示允许用户查看的组织。换句话说,服务器现在需要执行两项检查:

  • 服务器检查所提供的令牌是否为组织范围授权
  • 服务器检查用户(从令牌中检索)授权的特定组织

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

    谢谢您的回答!问题是一个用户可以访问多个组织。本例中的令牌证明用户授予应用程序访问该特定资源的权限。是的,但服务器可以检查该权限吗?它不必包含在令牌中。我一直在考虑您的解决方案(这就是为什么我没有立即回复的原因),但我不知道这是否合适。执行授权和身份验证(并生成令牌)的服务器与API使用的服务器是不同的服务器/数据库。API只需要一个令牌,尝试将令牌转换为声明,如果涉及到安全性,API只知道这一点。如果你看一下DotNetOpenAuth框架,我也看不到任何“内置”/“良好”的方式来保存令牌和令牌访问权限之间的关系。如果我错了,请纠正我:)