我正在使用ASP.NET Web Api
构建OAuth2 authorization
并正在处理我们已经拥有的应用程序:
客户拥有一个或多个组织,用户可以为一个或多个客户提供服务。
我想让这个逻辑成为范围和accessstokens的一部分。这样我可以限制访问,但我也使用我的API从应用程序中取出一些(复杂)逻辑。 (当他们选择小范围时)
范围
例如
当应用程序请求使用组织进行访问时 范围用户应该在授权页面上看到两个下拉框。一到 选择一个客户,选择一个客户,然后从组织中选择一个 这位顾客有。
这样,范围组织的accessestoken应仅限于此单一组织的数据。
使用DotNetOpenAuth
实现此目的的最佳方式是什么?
我应该将organisationId和customerId作为范围添加到accesstoken吗?如果我这样做,我将如何处理“客户”范围?我应该只添加没有组织ID的CustomerId吗? (客户最多可以拥有150个组织)
理想我希望将此转换为声明,我可以轻松地使用它来授权用户操作。
我希望得到一些反馈,如果范围是解决这个问题的正确方法,或者我可以更好地解决这个问题的一些想法,而无需重新启动方向盘或打开DotNetOpenAuth框架。
PS
我构建了AuthorizationServer
和ResourceServer
。
答案 0 :(得分:1)
就我而言,您不应该添加组织ID。您应该将令牌视为用户能够访问组织的证明,而不是具体的组织。服务器可以使用令牌中存储的用户名仅显示用户允许查看的组织。换句话说,服务器现在需要执行两项检查:
这样,您可以保持OAuth范围简单明了,但您仍然可以限制只访问特定组织。