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框架,我也看不到任何“内置”/“良好”的方式来保存令牌和令牌访问权限之间的关系。如果我错了,请纠正我:)