DotnetOpenAuth范围和声明

时间:2013-02-12 18:17:32

标签: asp.net-web-api oauth-2.0 dotnetopenauth

我正在使用ASP.NET Web Api构建OAuth2 authorization并正在处理我们已经拥有的应用程序:

  • 客户
  • 组织
  • 用户

客户拥有一个或多个组织,用户可以为一个或多个客户提供服务。

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

范围

  • 组织
  • 客户
  • 所有

例如

  

当应用程序请求使用组织进行访问时   范围用户应该在授权页面上看到两个下拉框。一到   选择一个客户,选择一个客户,然后从组织中选择一个   这位顾客有。

     

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

使用DotNetOpenAuth实现此目的的最佳方式是什么?

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

理想我希望将此转换为声明,我可以轻松地使用它来授权用户操作。

我希望得到一些反馈,如果范围是解决这个问题的正确方法,或者我可以更好地解决这个问题的一些想法,而无需重新启动方向盘或打开DotNetOpenAuth框架。

PS 我构建了AuthorizationServerResourceServer

1 个答案:

答案 0 :(得分:1)

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

  1. 服务器检查提供的令牌是否已获得组织范围的授权。
  2. 服务器检查用户(从令牌检索到的)的特定组织是否获得授权。
  3. 这样,您可以保持OAuth范围简单明了,但您仍然可以限制只访问特定组织。